工行软件开发:求助C++文件打开问题

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/14 01:45:08
#include<iostream>
#include<fstream>
#include<string>

using namespace std;

int main()
{
ifstream sfile;
string s;
cout<<"input file name:"<<endl;
cin>>s;
sfile.open(s.c_str());
while(!sfile.is_open())
{
cout<<"input again"<<endl;
cin>>s;
sfile.open(s.c_str());
}
while(!sfile.eof())
{
getline(sfile,s);
cout<<s;
}
sfile.close();
return 0;
}

如果第一次输入正确文件名,很正常,可以打开,也可以读取。
如果第一次输入错误,然后进入while循环,再输入正确的文件名,可以打开,跳出循环,但是读取文件,文件为空,读取操作为死循环。
如果读取改为

while(getline(sfile,s))
cout<<s<<endl;
不是死循环了,但是读取不到。

在第一个循环里面加上
sfile.clear();
清除刚才打开错误标记
再试试