【发布时间】:2012-11-02 10:32:52
【问题描述】:
我使用!(cin >> input) 来验证整数输入,但它没有捕获其他数据类型,例如浮点数。相反,它需要第一个整数。例如:
请输入一个数字:2.5。
我的错误信息出现在这里,假设循环,但它需要第一个数字。
输出“2”
如何让它忽略十进制输入?
【问题讨论】:
-
发布您的代码!
-
我们需要更多信息。最好是一个像样的代码示例,但至少是名为
input的变量的类型。 -
@IskarJarak 显然它被声明为整数类型,当输入看起来不像整数时,他希望这会失败。它没有的原因是浮点数的开头看起来像一个整数。它读取
2并留下.5以供下一个要读取的输入操作。 -
如果您想完全控制您的采集工作方式,唯一的方法是将整行作为字符串获取并手动执行解析(如有必要,借助例如
istringstream)。 -
它正在读取 2 并将 0.5 留在缓冲区中。这就是
cin >> int_variable的工作原理。我建议阅读一个字符串并使用boost::lexical_cast来规避它。
标签: c++ validation input types