程序读取文件后,从文件中获取字符并完成,系统会询问用户是否要读取其他文件。如果用户说“是”,则程序会询问文件名,但随后会自动说明文件无法打开并退出循环。请帮帮我。
以下是代码:
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
答案 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);