2015-12-12 39 views
0

我想讀出包含這樣的數據的文本文件:讀出TXT的文件與fstream的崩潰.EXE

11 34.5 12.5 1 2 65.3 23.6 1 3 94.3 12.3

依次類推,兩個整數後接兩個座標,沖洗並重復。 我用這個代碼(我真的不知道很多關於編程):

#include <vector> 
#include <sstream> 
using namespace std; 
int main() 
{ 
vector<double> frame(1); 
vector<double> point(1); 
vector<double> PosX(1); 
vector<double> PosY(1); 
int i=0; 
fstream file; 
string line; 
file.open ("sample1.txt", fstream::in | fstream::app); 
while(getline(file, line)) 
{ 
    istringstream ss(line); 
    ss >> frame[i] >> point[i] >> PosX[i] >> PosY[i]; 
    cout << frame[i] << " " << point[i] << " " << PosX[i] << " " << PosY[i]<< endl; 
    i++; 

} 
return 0; 
} 

該方案建立得很好,運行約前五十個組數字,但隨後崩潰。

+0

定義「崩潰」。學習使用調試器。 –

回答

2

你的向量只有一個元素,但你試圖設置的方式更多的值。沒有意外,它崩潰—你正在寫入你沒有分配的內存!

使用push_backresize,或使向量的大小正確。

+0

非常感謝你! 這樣一個愚蠢的錯誤,我完全忘了push_back。 現在有效。 再次感謝! –