【问题标题】:How to validate an integer properly in C++? [duplicate]如何在 C++ 中正确验证整数? [复制]
【发布时间】:2014-01-21 11:21:16
【问题描述】:

我想验证用户的输入以确保它是一个整数(完全)。我尝试了一些方法,例如 !cin,但它们都不能正常工作..

大多数方法都无法像这样验证输入:

32tgf

当先有数字后有字母时,不会失败,而是将其作为有效条目..

注意:这是一个大学项目,并指定变量应为 int 类型。

【问题讨论】:

  • 你说你已经尝试过方法......代码在哪里?你怎么在 StackOverflow 上找不到几十个好的现有答案?
  • 什么语法?领先的“+|-”符号?它是否处理十六进制等?

标签: c++ validation


【解决方案1】:

读入一个字符串,然后使用例如std::stoistd::strtol 都转换为整数并验证输入。

或读入一个字符串,将该字符串放入您用来提取整数的std::istringstream 中。然后检查istringstream中是否还有其他内容。

我推荐第一种方法。

【讨论】:

  • 这仍然不适用于 32tgf 的情况。您提到的功能将在第一个非数字字符处停止。
  • @ThomasMatthews 是的,但他们确实有返回停止位置的参数。如果它不是在最后,那么你没有一个有效的输入。
  • @ThomasMatthews:看看我链接到你的代码。它可以很好地处理测试用例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-02
  • 2020-04-10
  • 2012-10-10
  • 2020-01-21
  • 1970-01-01
  • 1970-01-01
  • 2021-11-27
相关资源
最近更新 更多