为什么这是一个永无止境的循环
Why is this a never-ending loop?
用作输入的文件是一个.txt文件,其中包含:
Line 1
Line 2
Line 3
Line 4
Line 5
,它正在我的代码的第三行上打开。然而,while循环永远不会终止,不断地打印"传递"到控制台,所以为什么在文本的第五行之后不找到 infile.eof()
?
int main(int argc, char** argv) {
ifstream infile;
infile.open("TEST.txt", ios::in);
if(infile.is_open()){
while(!infile.eof()){
cout << "Pass" << 'n';
}
}
else{
cout <<"Fail";
}
}
,因为您从未真正消耗(读)从ifile中使用任何东西来推进文件指针。该代码只是不断检查EOF,但实际上并未读取文件的任何内容。
正如其他人指出的那样,您不会做任何会导致无限环路的任何事情。至于您如何正确执行此操作的问题,请尝试以下操作:
int main()
{
ifstream infile("TEST.txt", ios::in);
string input;
while(infile)
{
getline(infile, input);
<do something with "input">
}
return 0;
}
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 运行同一解决方案的另一个项目的项目
- 挂起和取消挂起一个文件DLL
- 用C++中的一个变量定义一个常量
- 函数向量_指针有不同的原型,我可以构建一个吗
- 在c++中用vector填充一个简单的动态数组
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 预处理器:插入结构名称中的前一个行号
- 我在c++代码中生成了一个运行时#3异常
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- 从链接列表c++中删除一个项目
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '