在 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
我是 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