在代码中看到大量文件操作时,我有点畏缩。但是好的旧freopen()
在这个特定的代码段中让我失望了 -
int main()
{
ifstream fin;
int next=0;
fin.open("In.txt");
if(fin.is_open())
{
while(!fin.eof())
{
cout<<next;
next++;
}
}
else cout<<"Unable to open file"<<endl;
return 0;
}
我包含的标题是iostream,fstream和cstdio。这进入了一个无限循环。
我的问题是,我提供的文件作为输入肯定有一个结束。但为什么程序不会终止?提前谢谢。
答案 0 :(得分:2)
您几乎不应该使用eof()
作为文件读取循环的退出条件。尝试
std::string line;
if(fin.is_open())
{
while(getline(fin, line))
{
cout<<line;
}
}
如果您解释next
实际上应该做什么,我可以尝试告诉您如何操作,但我个人通常会阅读getline
或operator>>
的文件需要任何控制整数。
答案 1 :(得分:0)
您正在打开一个文件而实际上并没有从中读取文件。每次检查是否到达文件末尾时,流都在同一位置。
所以把它改成这样的东西:
string word;
while(!file.eof()) {
file >> word;
cout << next;
next++;
}