gpt4 book ai didi

c++ - 阻止用户输入字母? C++

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:45:34 26 4
gpt4 key购买 nike

大家好,我是 C++ 的新手,但我有一个小问题,那就是我必须阻止用户在数字部分输入字母。我做了一个尝试,但它很狡猾,因为它会允许用户继续然后会告诉他们他们有问题并重新启动应用程序。我如何验证它以显示一条错误消息告诉他们这不是数字并让他们重新输入数字?

代码如下:

 double  Rheight;

do
{
cout << "Enter height of the room. " << endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 4);
cout << "WARNING: If you enter a letter the program will exit." << endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
cin >> Rheight;
}
while (Rheight > 20 || Rheight == 0);

询问您是否需要查看更多代码。

最佳答案

答案基本上有两个组成部分:

  1. 检测到输入失败。
  2. 输入失败后清理。

第一部分相当简单:您应该始终在输入后测试流是否处于良好状态,然后再使用输入。例如:

if (std::cin >> value) {
// use value
}
else {
// deal with the input error
}

如何处理输入错误取决于您的需要。读取文件时,您可能会中止读取整个文件。从标准输入读取时,您可以只忽略下一个字符、整行等。您最想忽略整行。在这样做之前,您需要将流恢复到良好状态:

std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

第一行清除流的错误标志,第二行是一个魔法咒语,根据需要忽略尽可能多的字符,直到换行符被忽略。

关于c++ - 阻止用户输入字母? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22282388/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com