我编写了以下源代码:

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编译器,则问题出在其他地方(不能说在哪里,您没有显示足够的代码)。

08-28 12:30