我有一個基本的文本文件,每行有一個條目,大多數條目都是數字,但是有幾行文字和(均勻間隔) 在他們中。這裏是之間的一個這樣的間距和一個例子:C++將帶有數字和字的文本文件列表轉換爲整數2D數組
<event>
4
0
0.1005960E+03
0.2722592E+03
0.7546771E-02
0.1099994E+00
21
-1
0
0
501
502
0.00000000000E+00
0.00000000000E+00
0.17700026409E+03
0.17700026409E+03
0.00000000000E+00
0.
-1.
21
-1
0
0
502
503
0.00000000000E+00
0.00000000000E+00
-0.45779372796E+03
0.45779372796E+03
0.00000000000E+00
0.
1.
6
1
1
2
501
0
-0.13244216743E+03
-0.16326397666E+03
-0.47746002227E+02
0.27641406353E+03
0.17300000000E+03
0.
-1.
-6
1
1
2
0
503
0.13244216743E+03
0.16326397666E+03
-0.23304746164E+03
0.35837992852E+03
0.17300000000E+03
0.
1.
</event>
我需要做的是創建一個數值矩陣(僅使用的數值),其中每個列保存的每個單獨的實例和之間的所有數據值。
這是我到目前爲止有:
using namespace std;
int main()
{
vector <string> data;
string str;
ifstream fin("final_small.txt");
while (fin >> str)
{
data.push_back(str);
}
fin.close(); // Close the file.
int N = data.size();
int matrix[13][19];
for (int i = 0; i < 13; i++) {
for (int j = 0; j < 19; j++) {
matrix[i][j] = data[i];
}
}
}
顯然,這是一項正在進行的龐大的工作。首先,我將文本文件讀入一個向量,因爲這些單詞不能是int類型。然後,當我嘗試將其輸入到矩陣中時,這會導致問題。
有沒有人有任何建議?
提前致謝!
那麼,人們可以給出提示,爲每一行創建一個字符串,然後從每個字符串創建一個流。每個流將被讀取以填充矩陣中的一行。如果嘗試從該流讀取數字(使用通常的>>)失敗,則必須讀取可以忽略的「and」,iiuc。然後流必須重置,其餘的「和」必須被讀取,並且讀取int直到eof。 –