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

本文探讨了C++中将字符串转换为整数的两个函数——atoi和stoi的联系与区别。它们共同点在于都位于cstring头文件中,能处理含有非数字字符的字符串,仅转换数字部分。然而,stoi接受const string*作为参数,提供范围检查并抛出异常,而atoi则接受const char*,无范围检查,超出范围时返回整数边界或0。违法输入时,stoi会直接报错,而atoi则返回0。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

联系:
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.youkuaiyun.com/jojozym/article/details/104792257
2、范围检测不同:stoi有范围检测,超过则报错;atoi没有范围检测,超过则返回上界或者下界。
3、违法输入处理不同:stoi会直接报错,atoi会返回0(此处的违法指的是字符串从头部开始不存在一个可转换的整数序列,比如下面的几个例子)。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值