0
我想從文本文件中讀取整數,並將它們放入一個動態數組中,該數組將表示爲矢量和矩陣的分配。如何將整數從文件讀入動態數組
的從輸入文件中的幾行的一個例子:
3#456
33#123456789
磅符號之前的數字表示向量或矩陣的元素,所以3#將意味着一個三個元素向量和33#將意味着3行3列的矩陣。
讀這些並不是一個真正的問題,因爲我們被告知我們可以假設我們知道哪些行是矩陣,哪些是向量,但是,我從來沒有使用C++文件I/O,所以我不知道如何遍歷數字4,5,6並將它們放入一個3,9,12等元素動態創建的數組中。以下是我正在使用的一些示例。
int *a;
int size_a;
char x;
ifstream infile("input.txt");
if (infile.is_open())
{
infile >> size_a;
// The x is basically a junk variable used to go past the '#'
// when reading the file
infile >> x;
a = new int[size_a];
}
之後,我沒有真正意識到如何循環直到行的末尾,並將其餘元素放在數組中。例如,在這一行中,數字4,5和6需要放入數組中,然後從添加元素中斷開,然後轉到下一行以處理下一個數組,這我不知道如何做任一。有任何想法嗎?
...你沒有使用動態數組。你想'std :: vector' – 2015-03-02 05:08:29
不需要向量; 'new'賦予op創建數組的能力,這些數組的大小在運行時不是已知的,而是編譯時間。你說得對,這些並不是動態調整大小的數組,但它們確實符合OP的要求,不包括調整大小 - 只是不知道先驗大小。 – EyasSH 2015-03-02 05:15:31
你需要將每個數字流轉換成一個'char'變量(比如說''c'''),然後你可以使用表達式'c - '0''將它從ASCII轉換爲數字。使用這些數字來獲取正確的'size_a'等值,以及要寫入數組/矩陣的元素值。 – 2015-03-02 05:23:18