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;
}

结果如下:


  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;
}

结果如下:


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM