Clear()进入无限循环
clear() goes into infinite loop
输出一个"cannot open The file"的无限循环。我做错了什么?提前感谢。(注:我正试图测试它无法打开文件并通过从矢量获取下一个文件名继续处理的条件)
#include <iostream>
#include <istream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;
int main ()
{
ifstream input;
vector<string> files;
files.push_back("ifile");
files.push_back("ifile2");
vector<string>::const_iterator iter=files.begin();
while (iter!=files.end())
{
string s;
input.open(iter->c_str());
if (!input)
{
cerr<<"cannot open the file"<<endl;
input.close();
input.clear();
continue;
}
while(input>>s)
cout<<s<<' '<<ends;
input.close();
input.clear();
cout<<endl;
++iter;
}
return 0;
}
if (!input)
{
cerr<<"cannot open the file"<<endl;
input.close();
input.clear();
++iter;
continue;
}
你需要在这里自增你的迭代器
很简单,在错误情况下,您没有对迭代器进行加1操作。
- iter = files.begin()
- 开始循环
- 打开失败
- 字符不递增
- goto 2
更好的写法可能是使用for (;;)
循环,迭代器的增量发生在第三个子句中,这样continue
就不会绕过它。
相关文章:
- 过载'operator new'如何导致无限循环?
- C++正则表达式无限循环
- 程序在尝试猜测它选择的随机数时进入无限循环?
- 遍历链表时的无限循环
- 循环链表:无限循环
- 比较两个字符串后卡在无限循环中
- 在做一段时间内检查字符的无限循环
- 逐字读取文本文件中的每一行并转换为 int(无限循环或崩溃?
- 在这个无限循环中,当输入 0 时终止,当输入 int 范围之外的任何内容时,程序行为不正常
- 可能的无限循环
- 超出 int 的值范围后的无限循环
- 为什么这段代码会导致无限循环?
- 运行无限循环的最小二叉树问题
- 在分配和发布递增循环迭代器时C++无限循环(gcc 错误?
- 连接线程时的无限循环
- 为什么这种方法会进入无限循环?
- 由于QTextStream的无限循环
- Qt 在另一个线程中无限循环
- C++ 使用 cin.fail(), cin.clear() ---我有一个无限循环,不知道为什么
- Clear()进入无限循环