我发现这个漂亮的小片段暂停给用户,但它不允许任何选择。如果输入文件名输入错误,我想允许用户退出或重新输入。当然,如果文件不存在,程序将退出,但最好让用户做出决定。
void pause() {
cout << "Press ENTER to continue...";
cin.ignore( std::numeric_limits<std::streamsize>::max(), '\n' );
}
调用程序代码段 -
std::string name;
std::cout << "Please, enter your file name: ";
std::getline (std::cin,name);
std::cout << "Hello, " << name << '\n';
pause();
std::ifstream is (name.c_str(),ios::in | std::ifstream::binary);
输出错误的文件名 -
Please, enter your file name: col.tat
Hello, col.tat
Press ENTER to continue...
file not found --- col.tat
unix%
如何更改代码以使用户有机会重新输入文件名。我注意到它可能是坏的文件名,但是当用户输入错误的文件名时失败,例如昨天的工作。
答案 0 :(得分:0)
std::ifstream is;
do
{
std::string name;
std::cout << "Please, enter your file name: ";
std::getline (std::cin,name);
std::cout << "Hello, " << name << '\n';
pause();
is.open(name.c_str(),ios::in | std::ifstream::binary);
} while (!is.is_open())
这将循环,直到is
可以打开给定文件。
答案 1 :(得分:0)
这种逻辑是伟大的,唯一的事情是,在这种情况下,时间就像`
while(!is)
使用您的解决方案的那个小mod,它可以工作并做我想要的。