在 C++ 中将字符串转换为 int

Google Translate Icon

这篇文章将讨论如何在 C++ 中将字符串转换为 int。

1.使用 std::stoi 功能

标准方法是使用 std::stoi 用于将字符串转换为整数的函数。这 stoi 函数在 C++11 中引入并在头文件中定义 <string>.它抛出 std::invalid_argument 或者 std::out_of_range 错误输入或整数溢出的异常。值得注意的是,它会将字符串转换为 10xyz 为整数 10.

下载  运行代码

2.使用字符串流

std::stringstream 可用于转换 std::string 到其他数据类型,反之亦然。这遇到了同样的问题 std::stoi 确实,即,它将转换字符串,例如 10xyz 为整数 10.它返回 INT_MAX 或者 INT_MIN 如果转换后的值超出整数数据类型的范围。如果字符串的值不能表示为 int,则返回 0。

下载  运行代码

3.使用 boost::lexical_cast

另一个不错的选择是使用 boost::lexical_cast.它抛出 boost::bad_lexical_cast 无法构造有效整数或发生溢出时的异常。

下载代码

4.使用 std::atoi 功能

我们也可以使用 std::atoi 将字符串转换为 int 的函数。它需要一个 C 字符串作为参数,因此我们需要将我们的字符串转换为 C 字符串。我们可以使用 std::string::c_str.

请注意,如果转换后的值超出整数数据类型的范围,则其行为未定义。如果字符串的值不能表示为 int,则返回 0。

下载  运行代码

5.使用 sscanf() 功能

我们可以将 C 字符串传递给 sscanf() 函数作为参数,并将其转换为格式说明符中指定的相应数据类型。它将返回成功时的参数总数和失败时的 EOF。

下载  运行代码

6.使用基于范围的for循环

最后,天真的解决方案是实现我们自己的例程。这个想法是使用基于范围的 for 循环 (C++11) 遍历字符串的字符并单独处理每个数字。如果转换后的值超出整数数据类型的范围,则行为未定义。

下载  运行代码

这就是在 C++ 中将字符串转换为 int 的全部内容。

评价这篇文章

平均评分 4.65/5。票数: 57

暂时没有票!成为第一个给这篇文章评分的人。

很抱歉这篇文章对您没有用处!

告诉我们如何改进这篇文章?




谢谢阅读。

请使用我们的 在线编译器 使用 C、C++、Java、Python、JavaScript、C#、PHP 和许多更流行的编程语言在评论中发布代码。

像我们?将我们推荐给您的朋友,帮助我们成长。快乐编码 :)



订阅
通知
guest
2 注释
投票最多
最新 最老的
内联反馈
查看所有评论
请勿点击此链接,否则您将被禁止访问该网站!