如何将字符串解析为 C 中的 int?

新手上路,请多包涵

将字符串(以 char * 给出)解析为 int 的 C++ 方法是什么?强大而清晰的错误处理是一个加号(而不是 返回零)。

原文由 Eugene Yokota 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 491
2 个回答

在新的 C++11 中有这样的函数:stoi、stol、stoll、stoul 等等。

 int myNr = std::stoi(myString);

它将在转换错误时引发异常。

即使这些新函数仍然存在 Dan 指出的 相同问题:它们很乐意将字符串“11x”转换为整数“11”。

查看更多: http ://en.cppreference.com/w/cpp/string/basic_string/stol

原文由 CC. 发布,翻译遵循 CC BY-SA 3.0 许可协议

从 C++17 开始,您可以使用 std::from_chars 来自 <charconv> 标头,如此 所述。

例如:

 #include <iostream>
#include <charconv>
#include <array>

int main()
{
    char const * str = "42";
    int value = 0;

    std::from_chars_result result = std::from_chars(std::begin(str), std::end(str), value);

    if(result.error == std::errc::invalid_argument)
    {
      std::cout << "Error, invalid format";
    }
    else if(result.error == std::errc::result_out_of_range)
    {
      std::cout << "Error, value too big for int range";
    }
    else
    {
      std::cout << "Success: " << result;
    }
}

作为奖励,它还可以处理其他基数,例如十六进制。

原文由 Pharap 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题