【问题标题】:c++, converting input string to number, failure to convert should not return zero [duplicate]c ++,将输入字符串转换为数字,转换失败不应返回零[重复]
【发布时间】:2015-04-25 12:45:35
【问题描述】:

您好,我正在查看 c++ 中的字符串转换方法strtol、strtoll、strtoul、atol 等。 似乎它们中的每一个都会返回一个0(或0.0)作为无法转换的字符串的结果。 假设 0 对我的程序来说是一个完全有效的正确输入,我该如何避免将无意义的字符串转换为零并让它们抛出一些异常?是否有现成的功能可以以这种方式执行,或者我必须用我自己的一些代码来包装这些功能。 也有人可以解释一下这些函数设计成这样的原因(为什么要麻烦地将无意义的字符串解析结果与 hones-to-god "0" 字符串解析结果分开)?

【问题讨论】:

    标签: c++ string numbers string-parsing


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-10-27
          相关资源
          最近更新 更多