gpt4 book ai didi

c++ - int C++ 的输入验证

转载 作者:行者123 更新时间:2023-11-28 07:16:26 27 4
gpt4 key购买 nike

我基本上想验证我有一个 int 而不是 float 。我目前拥有的是:

int den1;
cout << "Enter denominator of first fraction" << endl;
cin >> den1;
while (den1 == 0){
cout << "Enter a non-zero denominator" << endl;
cin >> den1;
}

是否有为 den1 == int 生成 bool 值的“测试”?我试图避免使用 getline(),因为如果不需要,我不想使用字符串。

最佳答案

如果你想强制你的输入是一个整数类型,然后使用一个整数类型作为你的输入。如果 den1 是一个 int,它不会让您在其中放入浮点值。也就是说,cin >> den1 将是一个 int 值。如果用户尝试输入 3.14159,则只会读取 3(它将在 . 处停止读取。请注意,缓冲区的其余部分也将包含数字,因此,如果您不清除它,下一次读取整数的尝试将读取 14159

编辑

如果你想“强制”用户输入一个有效的整数,你可以这样做:

std::string 行;

int value = 0;
bool valid = false;
do
{
if (std::getline(std::cin, line))
{
if (std::string::npos == line.find('.'))
{
// no decimal point, so not floating point number
value = std::stol(line);
valid = true;
}
else
{
std::cin.clear();
}
}
} while (!valid);

与以下相比,这是很多额外的代码:

int value;
std::cin >> value;

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

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