C ++ ifstream在不存在现有文件时工作,如果现有文件不工作

时间:2016-03-21 15:11:53

标签: c++ ifstream

我写了一个代码,它完美无缺。但是一周之后我又打开了它,我有一个非常有趣的探测器,所以这里是:

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> 你可以帮帮我吗?我不知道我会怎么做......

2 个答案:

答案 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) ;