C++ 字符串类型转整形 [atoi()、stoi()以及stringstream]

**

string->int的三种方法

**

1、atoi()
原型:int atoi(const char *nptr),
输入是const char * 的类型,
在使用时需要用string.c_str()将string类型转换为const char *
例如:
string str=“17”;
int a= atoi(str.c_str());
//输出a=17;

atoi()没有安全性检查
如果我们输入的这个字符串转换成int超出了int范围[-2147483648, 2147483647],则会输出错误
如果结果超出了int的上界,则输出为上界的值2147483647
如果结果超出了下界,则输出为下界的值-2147483647
如果字符串无法转换为一个int或这个字符串为空,则会返回0。

2、stoi()
原型:int stoi (const string& str, size_t* idx = 0, int base = 10);
不需要类型转换,可以直接将字符串转换为int
后两个参数idx与base可以不设置,直接使用
例如:
string str=“17”;
int a=stoi(str);//输出a=17;

stoi()相比atoi存在安全检查,会检查输入是否越界
默认范围也是在int的范围内,越界后则会报错runtime error!

3、stringstream

最后一种比较安全的转换方法输入输出流
例如:
string str= “17”;
int a;
stringstream sstr(str);
sstr >> a;//输出a=17

一般建议大家使用第三种方法
其中修改a的类型,可以完成任意类型的转换
比如将a声明为unsigned int,这时atio与stoi的范围都不能满足,stringstream依旧可以。
stingstream在C++中是一个十分有用的流操作
可以实现字符串与数字类型的相互转换
包括字符串类型转数字类型和数字类型转字符串类型**
是一个非常常用的类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值