**
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++中是一个十分有用的流操作
可以实现字符串与数字类型的相互转换
包括字符串类型转数字类型和数字类型转字符串类型**
是一个非常常用的类