文件输入未按预期工作

Posted

技术标签:

【中文标题】文件输入未按预期工作【英文标题】:File input not working as expected 【发布时间】:2012-10-06 04:25:02 【问题描述】:

主要:

ifstream file("text.txt");
string line;
while (file) 
    file>>line;
    cout<<line<<endl;

在 text.txt 中:

hello
goodbye

输出:

hello
goodbye
goodbye

为什么最后一行打印了两次?

【问题讨论】:

见:***.com/questions/7868936/c-read-file-line-by-line @pb2q 很好,但这个问题与我提出的问题不同。我知道还有其他(也许更好的)方法可以做我想做的事,但我想知道为什么 这种 方法不起作用,以及为什么它会做它做的事情。 我明白为什么“hello”被打印两次,但不明白为什么“goodbye”被省略。我无法重现你的结果。 嗯...谢谢你的尝试。你能告诉我为什么 hello 被打印两次吗?因为我不明白那部分。 当我编译它时,我得到:hello goodbye goodbye 【参考方案1】:

重复:当您第一次阅读“再见”时,您不知道您已到达文件末尾并进入下一个迭代。然后读取失败,设置eof位,但打印出line的当前值,仍然是'再见'。

【讨论】:

以上是关于文件输入未按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

PHP 中的 file_exists 未按预期工作

CSSTransition过渡输入活动事件未按预期工作

C 基本代码未按预期工作

MultiResourceItemReader 未按预期工作

元音的字符串操作未按预期工作

PHP Manual .chm 索引功能未按预期工作