C++中atoi()函数和stoi()函数

atoi()函数和stoi()函数的作用

如果我们想要把一个string类型的字符串或者存放在一个字符数组(char*类型)中的字符串转换为数字的话,这两个函数将会是你的好帮手。

atoi()函数和stoi()函数的头文件

atoi()函数和stoi()函数的头文件都是"string"(c++)

atoi()函数参数

atoi()参数是 const char* 类型的,因此可以将一个字符数组转换成一个数字。但是如果将一个string类型的字符串转换成数字的话,这时我们需要先调用string类成员方法.c_str()将其转换为const char* 类型后,再进行转换。

还需要说的一点就是,atoi()函数的返回值为int类型,代表返回将字符串转换后的数字。

stoi()函数参数

stoi()参数是 const string& 类型的,因此可以将一个string类型的字符串转换成一个数字。

atoi()函数和stoi()函数的注意事项

  1. stoi()会做范围检查,默认范围在int范围内(因为返回的是int类型),如果超出范围的话则会runtime error!
  2. atoi()则不会做范围检查,如果超出范围的话,超出上界,则输出上界,超出下界,则输出下界。请看代码:
#include <cstdio>
#include <iostream>
#include <string>
using namespace std;
int main(){
    string str = "333333333333333333";
    //atoi()会返回上or下界(当转换的数字超出int范围时)
    cout << atoi(str.c_str()) <<endl;
    //stoi()返回out_of_range(超出边界异常)
    cout << stoi(str) << endl;
}

结果如下:
C++中atoi()函数和stoi()函数

  1. atoi()和stoi()函数都是只转换字符串的数字部分,如果遇到其它字符的话则停止转换。请看代码:
#include <cstdio>
#include <iostream>
#include <string>
using namespace std;
int main(){
    char str[] = {'1','2','a','3'};
    string str1 = "12aa3";
    //遇到了'a'字符,停止数字转换
    cout << atoi(str) << endl;
    //遇到了'a'字符,停止数字转换
    cout << stoi(str1) << endl;
}

结果如下:
C++中atoi()函数和stoi()函数

原文链接: https://www.cnblogs.com/gao79135/p/14918879.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    C++中atoi()函数和stoi()函数

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/211586

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 上午12:51
下一篇 2023年2月13日 上午12:52

相关推荐