如何知道 std::string/Cstring 中的值是不是为数字

Posted

技术标签:

【中文标题】如何知道 std::string/Cstring 中的值是不是为数字【英文标题】:How to know value in the std::string/Cstring is number or not如何知道 std::string/Cstring 中的值是否为数字 【发布时间】:2011-04-25 12:54:47 【问题描述】:

我在启动应用程序时收到命令行参数。 我从命令行获取四个参数。

解析后,我将它们存储在四个 std::string/CString(mfc) 变量中,现在我需要知道该值是否为十进制。因为这些参数将用于一些数学计算。

谁能帮帮我。

【问题讨论】:

【参考方案1】:

here您可以找到如何确定字符串是否为数字,支持 70 种语言!

我不确定所有解决方案是否都检查相同的内容。 C++ 实现检查输入是否是基数为 10 的正/负整数/浮点,或者它是否是基数 8/16 的正/负整数。 这是你想要的吗?您只需要支持正数吗?你需要支持浮点数吗?

您可能需要将输入字符串转换为数值,因此没有理由分两步进行(检查,然后转换)。最好一步完成。

还有一点:如果输入字符串太长,例如“32525252332912461984612491264912649126129319312931279171295127951275129”,您通常不会将其视为有效输入。

【讨论】:

哦,不错。对于那些还没有点击链接的人来说,“70 种语言”是指计算机语言,而不是人类语言。【参考方案2】:

查看字符串中的每个字符,如果发现不是数字或“.”的内容,则它不是数字。

【讨论】:

失败:“0.1.2.3”通过测试但不是有效数字。 是的,你需要某种计数器来确保只有 0 或 1 . 只是想给克里斯一些想法,而不是为他做。【参考方案3】:

只需使用字符串->数字转换函数,明确报告失败。

例如strtod 而不是 atof

【讨论】:

以上是关于如何知道 std::string/Cstring 中的值是不是为数字的主要内容,如果未能解决你的问题,请参考以下文章

谷歌分析如何知道流量的来源?

如何知道设备中 imageView 的实际大小?

我是不是需要知道如何手动创建数据结构以获得入门级工作,或者我应该只知道如何使用收集框架中的数据结构? [关闭]

内核如何知道文件已关闭

Python:出现“列表索引超出范围”错误;我知道为啥但不知道如何解决

如何知道元素是不是对用户可见? [复制]