在 C++ 中读取文件时得到意外的值

Got unexpected values when reading file in c++

我是 C++ 新手。目前我正在学习如何读取和写入文件。我创建了一个文件“nb.txt”,内容如下:

1 2 3 4 5 6 7
2 3 4 5 6 7 9

我正在使用一个简单的程序来读取这个文件,循环直到到达 EOF。

#include <iostream>
#include <fstream>
using namespace std;

int main() {
    ifstream in("nb.txt");
    while (in) {
        int current;
        in >> current;
        cout << current << " ";
    }
}

我期望的是程序将输出所有值。 但我真正得到的是:

1 2 3 4 5 6 7 2 3 4 5 6 7 9 9

输出中有多个“9”。我不明白这是怎么回事!是while循环的原因吗?

谁能帮我看看为什么还有一个“9”?谢谢!

问题是在您读取最后一个值(在本例中为9)后in尚未设置为文件结束。因此程序再次进入 while 循环,然后读取 in(现在将其设置为 文件结尾 )并且不对变量进行任何更改current 并打印其当前值(即 9)。

解决这个问题,您可以进行以下操作:

int main() {
    ifstream in("nb.txt");
    int current=0;
    while (in >> current) {  //note the in >> curent
       cout << current << " ";
    }
}

上面程序的输出可见here:

1 2 3 4 5 6 7 2 3 4 5 6 7 9