繁体   English   中英

C ++,将输入字符串转换为数字,转换失败不应返回零

[英]c++, converting input string to number, failure to convert should not return zero [duplicate]

这个问题已经在这里有了答案:

大家好,我来看看c ++ strtolstrtollstrtoulatol等中的字符串转换方法。似乎每个字符串中的每个都会返回0 (或0.0 ),这是导致无法转换的字符串的结果。 假设0是我的程序的完全正确的正确输入,如何避免将无意义的字符串转换为零,并使它们抛出一些异常呢? 是否有现成的函数可以执行这种方式,或者我必须用自己的一些代码包装这些函数。 还有谁能解释我这些功能的设计原因是什么(为什么要麻烦把无用的字符串分析结果与“神往”的“ 0”字符串分析结果分开)?

设置errno表示失败,这是老式的C方式。

您可能会发现stol和朋友更有用-他们通过抛出异常来指示失败。

http://en.cppreference.com/w/cpp/string/basic_string/stol

您可以使用std::stoi() std::stof()函数家族来执行此操作。 该函数将为无效输入抛出异常。

您可能会发现有用的boost / lexical_cast

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM