C++ atoi和stoi的区别和联系

联系:
1、都在cstring头文件里
2、功能都是把一个字符串转换为int
3、当字符串中有除了数字外的字符时,只会将这些字符前的数字转换为int

int main()
{
	int a = atoi("+1234!!@12313131313113a12");//本例中stoi的输出结果一样
	cout << a;
}

输出结果为
在这里插入图片描述
区别:
1、函数参数不同:stoi的参数是const string*,atoi的参数是const char*。可以直接将char作为stoi函数的参数,因为string类存在相应的构造函数。但不能将string作为atoi函数的参数,如果一定要用,先将string转化为char(利用string类内的data方法或者c_str方法或者copy方法)。
string和char*的转换可以参考我的博文https://blog.csdn.net/jojozym/article/details/104792257
2、范围检测不同:stoi有范围检测,超过则报错;atoi没有范围检测,超过则返回上界或者下界。
3、违法输入处理不同:stoi会直接报错,atoi会返回0(此处的违法指的是字符串从头部开始不存在一个可转换的整数序列,比如下面的几个例子)。

使用stoi:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用atoi:
在这里插入图片描述
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章