C++ ifstream 在不存在文件时工作,在存在文件时不工作
C++ ifstream working when not existing file and not working if existing file
我写了一个代码,它运行完美。但 1 周后我再次打开它,我有一个非常有趣的问题,所以这里是:
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
不存在,该程序已编译并可以运行,但是当我想查看我从文件中获得的数据时,它 运行 会陷入无限循环。
你能帮帮我吗?我不知道我会做什么...
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
' s 布尔运算符和 (i < SOR) &&
防止溢出。注意 i
现在在读取之后和下一次测试之前递增,消除了允许 i
超过 SOR
.
的差一错误的可能性
我会选择这样的东西:
ifstream file;
file.open("bemenet.txt");
TERMEK t ;
std::vector<TERMEK > termekek ;
while (file >> t.termek >> t.ara >> t.darab )
termekek.push_back(t) ;
我写了一个代码,它运行完美。但 1 周后我再次打开它,我有一个非常有趣的问题,所以这里是:
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
不存在,该程序已编译并可以运行,但是当我想查看我从文件中获得的数据时,它 运行 会陷入无限循环。
你能帮帮我吗?我不知道我会做什么...
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
' s 布尔运算符和 (i < SOR) &&
防止溢出。注意 i
现在在读取之后和下一次测试之前递增,消除了允许 i
超过 SOR
.
我会选择这样的东西:
ifstream file;
file.open("bemenet.txt");
TERMEK t ;
std::vector<TERMEK > termekek ;
while (file >> t.termek >> t.ara >> t.darab )
termekek.push_back(t) ;