gpt4 book ai didi

c++ - 我正在读取文件,但在读取时,它正在额外读取最后一个字符一次?

转载 作者:太空宇宙 更新时间:2023-11-04 16:30:06 26 4
gpt4 key购买 nike

我正在尝试通过以下代码读取文件

void main()
{
int i=0;
ifstream fout1 ("Aj.txt",ios::binary);
if (fout1.is_open())
{
while(fout1)
{
i++;
fout1.get(ch1);
cout<<ch1;
}
cout<<i;
fout1.close();
}
else
{
cout << "Unable to open file";
}
return 0;
}

这里这段代码读取整个文件,但它会额外进入循环一次,即如果文件中有 4 个字符,那么在循环中它将迭代 5 次。如何更正或克服它。

最佳答案

该代码一直读取到 eof 标志被设置,但是 eof 标志直到读取实际失败才被设置。这意味着当 fout1.get(ch1) 读取最后一个字符时,eof 尚未设置。因此它显示并检查 fout 是否仍然正常,因此它重新进入循环。然后 fout1.get(ch1) 因为 eof 而失败,它再次显示 ch1 的先前值。编写该循环的正确方法是:

while(fout1.get(ch1)) {  //false when it can't read any more characters
i++;
cout<<ch1;
}
cout<<i;
fout1.close();

关于c++ - 我正在读取文件,但在读取时,它正在额外读取最后一个字符一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8041025/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com