消息并不总是出现在输入错误中
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
谢谢。
【问题讨论】:
您可能想要区分0
或1
的成功输入和while (getline(cin,instruction))
也失败。
【参考方案1】:
你输入的第一行被getline(cin,instruction)
吃掉了,所以cin.ignore(numeric_limits<streamsize>::max(),'\n');
等待你输入第二行然后吃掉它。只需删除 cin.clear()
和 cin.ignore(numeric_limits<streamsize>::max(),'\n');
,因为 getline
调用已经消耗了错误的输入。
【讨论】:
货运***节目。 :-(以上是关于消息并不总是出现在输入错误中的主要内容,如果未能解决你的问题,请参考以下文章
如何避免 Access VBA 中出现“您必须输入值”错误消息