我写了一个代码,它完美无缺。但是一周之后我又打开了它,我有一个非常有趣的探测器,所以这里是:
ifstream file;
file.open("bemenet.txt");
int i = -1;
while (i < SOR)
{
i++;
file >> termekek[i].termek;
file >> termekek[i].ara;
file >> termekek[i].darab;
}
file.close();
在这种情况下bemenet.txt
存在,程序已编译,当我尝试运行时:我得到了错误代码:0xC0000005
另一种情况是bemenet2.txt
不存在,程序已经编译并且可以正常工作,但是当我想看到我从它运行的文件中获得的数据到无限循环时./ / p>
你可以帮帮我吗?我不知道我会怎么做......
答案 0 :(得分:1)
ifstream file;
file.open("bemenet.txt");
int i = 0;
while ((i < SOR) && file >> termekek[i].termek >> termekek[i].ara >> termekek[i].darab )
{
i++;
}
file.close();
while (file >> termekek[i].termek >> termekek[i].ara >> termekek[i].darab)
将测试您将关注的每个IO和转换条件 - 打开失败,文件结束,数据转换失败,各种IO读取错误 - 感谢iostream
&#39 ; s布尔运算符和(i < SOR) &&
可防止溢出。注意i
现在在读取之后和下一次测试之前递增,从而消除了允许i
超过SOR
的一分之一错误的可能性。
答案 1 :(得分:1)
我会选择这样的事情:
ifstream file;
file.open("bemenet.txt");
TERMEK t ;
std::vector<TERMEK > termekek ;
while (file >> t.termek >> t.ara >> t.darab )
termekek.push_back(t) ;