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

c++, converting input string to number, failure to convert should not return zero

本文关键字:转换 返回 失败 输入 字符串 C++ 数字      更新时间:2023-10-16

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

失败是通过设置 errno 来表示的,这是老式的 C 做事方式。

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

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

您可以使用

std::stoi() std::stof()函数系列来执行此操作。这些函数将引发无效输入异常。

您可能会发现有用的提升/lexical_cast。