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>
c++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;
}
结果如下:
3. 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;
}
结果如下:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。