暂停用户更正输入

时间:2014-12-17 23:51:41

标签: c++ user-controls

我发现这个漂亮的小片段暂停给用户,但它不允许任何选择。如果输入文件名输入错误,我想允许用户退出或重新输入。当然,如果文件不存在,程序将退出,但最好让用户做出决定。

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%

如何更改代码以使用户有机会重新输入文件名。我注意到它可能是坏的文件名,但是当用户输入错误的文件名时失败,例如昨天的工作。

2 个答案:

答案 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,它可以工作并做我想要的。