在我们做题练习中,类型转换应用很是比较广,为了方便做题和使用,在此做一个简单的总结。
①string转换为int
方法一:stoi()函数和atoi()函数
1.stoi和atoi函数的头文件都是 string
#include<string>
2.用法和区别
string a="1234455";
int b=stoi(a);
int c=atoi(a.c_str());
注意:因为atoi的参数是const char,所以我们要用c_str()将其转换为string类型
在int范围输出这两个数
如果超出int范围
stoi():
atoi会进行范围检查,超出范围会报错!
atoi:
而atoi不会范围检查,超出范围会输出上界或者下界!
补充:
stol:
将字符串转换为long int 类型
stoul
将字符串转换为无符号长整数
stoll
将字符串转换为long long 类型
stoull
将字符串转换为unsigned long long类型
stof
将字符串转换为float类型
stod
将字符串转换为double类型
stold
将字符串转换为 long double 类型
方法二:用字符串流ssteam
1.头文件为 sstrem
#include<sstream>
2.类型转换
stringstream b;
string a = "123456";
int c;
b << a;
b >> c;
cout << c <<endl;
先把string类型送进stringstream中,然后再把它送出到int的类型中。
sstream用处十分的广泛,我们后面再说以以空格隔开字符的使用。
②int类型转换为string类型
方法一:使用to_string()函数
1.函数库为string
#include<string>
2.类型转换
int a = 123456;
string b = to_string(a);
方法二:用sstream字符串流
和上述的将string转换为int一致,只需要交换读取顺序。
stringstream b;
int a = 123456;
string c;
b << a;
b >> c;
③浮点类型和string类型的相互转换
1.浮点转换为string:
直接用to_string()这个函数方法就能简单解决。
2.string转换为浮点类型:
使用上述提到的stof()、stod()、stold()。根据需要的长度选择合适的方法即可
对上述的ssteam字符串流另外一个经常使用方法补充:
将一行字符串以空格隔开
代码:
#include<iostream>
#include<string>
#include<sstream>
#include<vector>
using namespace std;
int main()
{
string a = "hello nice to meet you";
stringstream b(a);
vector<string>str;
string t;
while (b)
{
b >> t;
str.push_back(t);
}
return 0;
}