输出是“无法打开文件”的无限循环。我做错了什么?提前致谢。 (P.S我想测试的条件,它无法打开文件,并通过从向量获取下一个文件名继续处理)clear()进入无限循环
#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;
}
清除通常在badbit之后的打开文件上调用以继续处理该文件。试试把它拿出来?不确定它在这里做什么。 –