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()函数的注意事项
- stoi()会做范围检查,默认范围在int范围内(因为返回的是int类型),如果超出范围的话则会runtime error!
- 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;
}
结果如下:
- 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;
}
结果如下:
原文链接: https://www.cnblogs.com/gao79135/p/14918879.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/211586
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!