为什么在循环条件内使用iostream :: eof被认为是错误的?
仅仅因为我们尚未达到EOF,并不意味着下一次读取将成功。
假设您有一个使用C++中的文件流读取的文件。编写循环以读取文件时,如果要检查stream.eof(),则基本上是在检查文件是否已达到eof。
所以你会像这样写代码-
示例
#include<iostream>
#include<fstream>
using namespace std;
int main() {
ifstream myFile("myfile.txt");
string x;
while(!myFile.eof()) {
myFile >> x;
//需要再次检查x是否有效或eof-
if(x) {
//用x做某事
}
}
}示例
当您直接在循环中使用流时,无需两次检查条件-
#include<iostream>
#include<fstream>
using namespace std;
int main() {
ifstream myFile("myfile.txt");
string x;
while(myFile >> x) {
//用x做某事
//无需检查!
}
}