首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在C++中验证数字输入

如何在C++中验证数字输入
EN

Stack Overflow用户
提问于 2009-02-05 03:24:42
回答 5查看 34.9K关注 0票数 7

我想知道如何使用std::cin将输入值限制为带符号的小数。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-02-05 03:58:18

代码语言:javascript
运行
复制
double i;

//Reading the value
cin >> i;

//Numeric input validation
if(!cin.eof())
{
    peeked = cin.peek();
    if(peeked == 10 && cin.good())
    {
             //Good!
             count << "i is a decimal";
        }
        else
        {
             count << "i is not a decimal";
         cin.clear();
         cin >> discard;
        }
}

这也给出了输入-1a2.0的错误消息,避免了将-1赋值给i。

票数 7
EN

Stack Overflow用户

发布于 2009-02-05 03:34:44

如果cin的支持变量是数字,而提供的字符串不是数字,则返回值为false,因此需要一个循环:

代码语言:javascript
运行
复制
int someVal;

while(!(cin >> someVal)) {
   cin.reset();
   cout << "Invalid value, try again.";
}
票数 6
EN

Stack Overflow用户

发布于 2009-02-05 22:52:00

cin的>>操作符的工作方式是一次读取一个字符,直到它到达空格。这将吞噬整个字符串-1a2.0,它显然不是一个数字,因此操作失败。看起来您实际上有三个字段,-1、a和2.0。如果用空格分隔数据,cin将能够毫无问题地读取每个数据。只需记住读取第二个字段的char即可。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/514420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档