我刚刚在这个答案中发现了一条评论说iostream::eof在循环条件下使用"几乎肯定是错误的".我通常使用类似的东西while(cin>>n)- 我猜是隐式检查EOF,为什么检查eof显式使用while (!cin.eof())错误?
它与scanf("...",...)!=EOF在C中使用有何不同(我经常使用没有问题)?
我的老师说我们不应该使用EOF来读取文本文件或二进制文件信息,而应该使用(afile >> x).他没有解释原因,有人可以向我解释.有人也可以解释这两种不同的阅读方法有什么不同
//Assuming declaration
//ifstream foobar
( ! foobar.eof() )
{
foobar>>x; // This is discouraged by my teacher
}
while (foobar>>x)
{
//This is encouraged by my teacher
}
Run Code Online (Sandbox Code Playgroud) ifstream infile;
string read_file_name("test.txt");
infile.open(read_file_name);
string sLine;
while (!infile.eof())
{
getline(infile, sLine);
cout << sLine.data() << endl;
}
infile.close();
Run Code Online (Sandbox Code Playgroud)
该程序打印文件中的所有行,但我想只打印第一行.
我正在处理使用eof()的问题.运用
string name;
int number, n=0;
while(!in.eof())
{
in >> name >> number;
//part of code that puts into object array
n++;
}
Run Code Online (Sandbox Code Playgroud)
只要文件中没有更多文本,我就听起来很正常.但我得到的是n是4200317.当我查看数组条目时,我看到第一个是文件中的那些,其他是0.
可能是什么问题,我该如何解决?也许有一个替代这个阅读问题(有不确定的行数)