
[英]Checking if an input string is a number and in C++ and, if so, converting it to an int (regex?)
[英]c++, converting input string to number, failure to convert should not return zero [duplicate]
这个问题已经在这里有了答案:
大家好,我来看看c ++ strtol
, strtoll
, strtoul
, atol
等中的字符串转换方法。似乎每个字符串中的每个都会返回0
(或0.0
),这是导致无法转换的字符串的结果。 假设0
是我的程序的完全正确的正确输入,如何避免将无意义的字符串转换为零,并使它们抛出一些异常呢? 是否有现成的函数可以执行这种方式,或者我必须用自己的一些代码包装这些函数。 还有谁能解释我这些功能的设计原因是什么(为什么要麻烦把无用的字符串分析结果与“神往”的“ 0”字符串分析结果分开)?
设置errno
表示失败,这是老式的C方式。
您可能会发现stol
和朋友更有用-他们通过抛出异常来指示失败。
您可以使用std::stoi()
std::stof()
函数家族来执行此操作。 该函数将为无效输入抛出异常。
您可能会发现有用的boost / lexical_cast 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.