用fstream崩溃.exe读出txt文件

时间:2015-12-12 14:09:58

标签: c++ fstream

我正在尝试读出包含如下数据的文本文件:

  

1 1 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;
}

该程序构建得很好并且可以运行大约前50个数字,但随后崩溃。

1 个答案:

答案 0 :(得分:2)

你的向量每个只有一个元素,但你试图为 way 设置更多的值。毫不奇怪它崩溃了 - 你写入你没有分配的记忆!

使用push_backresize,或者让矢量的大小正确。