我不明白 while 语句是如何工作的。按照我的逻辑, inFile >> count 返回一个 inFile 对象,然后将其与 get() 函数一起使用。然后 InFile.get() 读取剩余的换行符并将其与该字符进行比较。底线是 inFile 是一个用于从文件读取的对象(类似于 cin)。文件中的第一行由数字组成,行尾由换行符组成。为什么这个循环从未执行过?我最感兴趣的是这个运算符是如何工作的——它的逻辑。我只是想了解这个错误。
ifstream inFile;
inFile.open(filename);
int count;
while (((inFile >> count).get()) != '\n')
cout << count;
“是的,理解他并不难,先生,” © Deacon Feofan :)
如果一切都正确的话。那些。在文件中的行中有一个数字和一个换行符...
然后
(inFile >> count)读取下一个字符.get()。是平等的\n。与 比较\n。平等的?当然!条件又如何呢?不等式..这意味着循环中的条件为假,我们退出循环而不执行其主体...继续?
让我们想象一下,你有……嗯,
123+\n。然后我们读取 123,符号+,满足不等式,打印出数字,再次运行循环 - 如果下一行中有数字,那么我们重复这些步骤。如果没有,inFile它将进入失败状态,并且不再读取......如果没有文件怎么办?没打开?不会有任何阅读,无论是其中之一还是另一方。或者更确切地说,第二次读取将返回
eof,不等于\n,因此循环将输出一个count随机值,并将继续执行相同的操作直到停止......所有其他麻烦都以类似的方式处理......
就像它如何工作的伪代码草图一样
像这样: