我编写了以下源代码:
ifstream leggiFile;
leggiFile.open("Questions.txt",ios::in);
if (!leggiFile.good())
{
cerr << "\n\n\n\tErrore during file opening Questions.txt\n\n\n" << endl;
}
else
{
// ...
};
leggiFile.close();
system("pause");
现在,我想使用相同的对象来处理第二个文件。
leggiFile.open("Answers.txt",ios::in);
i=0;
if(!leggiFile.good())
{
cerr << "\n\n\n\tError during opening of file answers.txt\n\n\n" << endl;
}
else
{
// ...
}
问题:第二次无法打开文件,并且出现错误消息。为什么?
您能给我建议一个解决方案吗?
最佳答案
您可能已经完成了设置一个或多个错误标志(例如eofbit
)的流工作。
关闭流并不会清除其错误标志,您必须手动进行操作。关闭它后,呼叫leggiFile.clear();
。
从C ++ 11开始,这是由open()
自动完成的。如果您已经在使用C ++ 11编译器,则问题出在其他地方(不能说在哪里,您没有显示足够的代码)。