我正在尝试读出包含如下数据的文本文件:
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个数字,但随后崩溃。
答案 0 :(得分:2)
你的向量每个只有一个元素,但你试图为 way 设置更多的值。毫不奇怪它崩溃了 - 你写入你没有分配的记忆!
使用push_back
或resize
,或者让矢量的大小正确。