gpt4 book ai didi

c++ - 输入的整数验证

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:20:43 24 4
gpt4 key购买 nike

我试图提示用户输入并进行验证。例如,我的程序必须接受 3 个用户输入。一旦遇到非整数,它将打印错误消息并再次提示输入。这是我的程序运行时的样子:

Enter number: a

Wrong input

Enter number: 1

Enter number: b

Wrong input

Enter number: 2

Enter number: 3

Numbers entered are 1,2,3

这是我的代码:

double read_input()
{
double input;
bool valid = true;
cout << "Enter number: " ;
while(valid){
cin >> input;
if(cin.fail())
{
valid = false;
}
}
return input;
}

我的主要方法:

int main()
{
double x = read_input();
double y = read_input();
double z = read_input();
}

当我的第一个输入是非整数时,程序会自行退出。它不会再次要求提示。我该如何修复它?或者我是否应该使用 do while 循环,因为我要求用户输入。

提前致谢。

最佳答案

当读取失败时,将valid设置为false,所以while循环中的条件为false 并且程序返回 input(顺便说一句,它没有被初始化)。

您还必须在再次使用之前清空缓冲区,例如:

#include <iostream>
#include <limits>

using namespace std;

double read_input()
{
double input = -1;
bool valid= false;
do
{
cout << "Enter a number: " << flush;
cin >> input;
if (cin.good())
{
//everything went well, we'll get out of the loop and return the value
valid = true;
}
else
{
//something went wrong, we reset the buffer's state to good
cin.clear();
//and empty it
cin.ignore(numeric_limits<streamsize>::max(),'\n');
cout << "Invalid input; please re-enter." << endl;
}
} while (!valid);

return (input);
}

关于c++ - 输入的整数验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16934183/

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