0
我正在制作一个程序,用户必须通过输入1,2或3来选择一个选项。我能够检测到他们输入的数字并让程序重复如果他们使用switch语句输入除这些以外的其他号码。每次我输入一封信时,程序都会每秒重复提示数百次。如何在继续之前检查变量以确保其中包含int。我有一种感觉,它会涉及到使用一个字符串,然后检查它,以确保它包含一个int然后转换它,如果我能有一个这样的代码的例子,它会很好。谢谢C++检测用户是否输入字符串而不是输入
我正在制作一个程序,用户必须通过输入1,2或3来选择一个选项。我能够检测到他们输入的数字并让程序重复如果他们使用switch语句输入除这些以外的其他号码。每次我输入一封信时,程序都会每秒重复提示数百次。如何在继续之前检查变量以确保其中包含int。我有一种感觉,它会涉及到使用一个字符串,然后检查它,以确保它包含一个int然后转换它,如果我能有一个这样的代码的例子,它会很好。谢谢C++检测用户是否输入字符串而不是输入
您应该总是验证您已成功读取所需的输入。如果输入失败了,你可能想摆脱违规字符,然后重试:
int value(0);
while (!(std::cin >> value)) {
std::cout << "you entered a non-digit character\n";
std::cin.clear(); // make sure that std::cin is happy to do something
std::cin.ignore(); // ignore the offending character
}
当输入失败,则std::ios_base::failbit
被设置在流和数据流不会转换为true
(或者不操作应用于流的!
返回true
)。一旦设置了std::ios_base::failbit
,流将拒绝任何进展,直到该位再次被清除。使用clear()
您可以重置错误位。然而,一旦位被重置,违规字符仍然在输入中。要摆脱下一个字符,您可以使用ignore()
。如果你觉得你想忽略整行输入,你会使用类似于
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
检查输入操作的结果。 – chris
和代码?.. – 0x499602D2
你只能存储第一个字符,并检查ascii值是否是一个数字,如果你只是做1-3有效输入 – Ken