第一个文件后,C ++后续文件无法打开

时间:2012-03-21 03:23:39

标签: c++ loops getfiles

程序读取文件后,从文件中获取字符并完成,系统会询问用户是否要读取其他文件。如果用户说“是”,则程序会询问文件名,但随后会自动说明文件无法打开并退出循环。请帮帮我。

以下是代码:

do //do while opening the source file fails
      {
         cout << "Enter filename of source file: ";
         cin.getline (filename,51);
         sourceFile.open(filename);  //opens the file with given filename
         if (sourceFile.fail())
            cout << "File could not be opened" << endl;  //error if can't open
         sourceFile.clear();
      } 
      while (sourceFile.fail());  //exits if source file doesn't fail

2 个答案:

答案 0 :(得分:1)

这个测试:

while (sourceFile.fail())

永远不会成真,因为就在你到达那里之前,你打电话:

sourceFile.clear()

将清除流的iostate中的任何问题位。

我想你只想摆脱对clear()的呼吁。

答案 1 :(得分:0)

检查打开文件失败的规范方法是使用std::basic_ios::operator !()

do
{
    cout << "Enter filename of source file: ";
    std::getline(std::cin, filename);
    sourceFile.open(filename.c_str());
    if (!sourceFile)
    {
        cout << "File could not be opened" << endl;
    }
}
while (!sourceFile);