消息并不总是出现在输入错误中

Posted

技术标签:

【中文标题】消息并不总是出现在输入错误中【英文标题】:Message not always appearing in input error 【发布时间】:2020-03-20 17:46:07 【问题描述】:

为什么“错误:必须引入 1 或 0”消息只出现 2 次而不总是出现?

int instruction() 
    string instruction;
    cout << "Do you want to see the tutorial of the game? If yes press: 1, else press: 0" << endl << "--> ";
    while (getline(cin,instruction))
        if (instruction == "1" ||  instruction == "0") 
            break;
        else
                cin.clear();
                cin.ignore(numeric_limits<streamsize>::max(),'\n');
                cout << "Error: Must introduce 1 or 0" << endl << "--> ";
            
    

调试输出:

Do you want to see the tutorial of the game? If yes press: 1, else press: 0
--> asdasd
asdasdasd
Error: Must introduce 1 or 0
--> sdfasdfasdf
asdf
Error: Must introduce 1 or 0
--> sad
fasd
Error: Must introduce 1 or 0
--> fas
df
Error: Must introduce 1 or 0
--> asd
fas

谢谢。

【问题讨论】:

您可能想要区分01 的成功输入和while (getline(cin,instruction)) 也失败。 【参考方案1】:

你输入的第一行被getline(cin,instruction)吃掉了,所以cin.ignore(numeric_limits&lt;streamsize&gt;::max(),'\n');等待你输入第二行然后吃掉它。只需删除 cin.clear()cin.ignore(numeric_limits&lt;streamsize&gt;::max(),'\n');,因为 getline 调用已经消耗了错误的输入。

【讨论】:

货运***节目。 :-(

以上是关于消息并不总是出现在输入错误中的主要内容,如果未能解决你的问题,请参考以下文章

数据表好奇的Ajax错误并不总是出现

如何避免 Access VBA 中出现“您必须输入值”错误消息

在 vscode 中,使用 isWatching 的任务生成的错误在修复后并不总是被清除

Zend ErrorController 视图问题

打印机总是出现发生未知错误

验证 php 表单 - 如何在表单上显示错误消息