C++ int与string的相互转换
一、int转换成string
Ⅰ、to_string函数
c++11标准增加了全局函数std::to_string:
string to_string (int val);
string to_string (long val);
string to_string (long long val);
string to_string (unsigned val);
string to_string (unsigned long val);
string to_string (unsigned long long val);
string to_string (float val);
string to_string (double val);
string to_string (long double val);
Example:
1 // to_string example 2 #include <iostream> // std::cout 3 #include <string> // std::string, std::to_string 4 5 int main () 6 { 7 std::string pi = "pi is " + std::to_string(3.1415926); 8 std::string perfect = std::to_string(1+2+4+7+14) + " is a perfect number"; 9 std::cout << pi << '\n'; 10 std::cout << perfect << '\n'; 11 return 0; 12 } 13 Output 14 pi is 3.141593 15 28 is a perfect number
Ⅱ、借助字符串流
标准库定义了三种类型字符串流:istringstream,ostringstream,stringstream,看名字就知道这几种类型和iostream中的几个非常类似,分别可以读、写以及读和写string类型,它们也确实是从iostream类型派生而来的。要使用它们需要包含sstream头文件。
除了从iostream继承来的操作
1.sstream类型定义了一个有string形参的构造函数,即: stringstream stream(s); 创建了存储s副本的stringstream对象,s为string类型对象
2.定义了名为str的成员,用来读取或设置stringstream对象所操纵的string值:stream.str(); 返回stream中存储的string类型对象stream.str(s); 将string类型的s复制给stream,返回void
Example:
1 int aa = 30; 2 stringstream ss; 3 ss<<aa; 4 string s1 = ss.str(); 5 cout<<s1<<endl; // 30
二、string转换成int
Ⅰ、采用标准库中atoi函数,对于其他类型也都有相应的标准库函数,比如浮点型atof(),long型atol()等等
Example:
1 std::string str = "123"; 2 int n = atoi(str.c_str()); 3 cout<<n; //123
Ⅱ、采用sstream头文件中定义的字符串流对象来实现转换
1 istringstream is("12"); //构造输入字符串流,流的内容初始化为“12”的字符串 2 int i; 3 is >> i; //从is流中读入一个int整数存入i中
参考资料:
http://blog.csdn.net/lxj434368832/article/details/78874108
https://www.cnblogs.com/aminxu/p/4704281.html
上一篇: CSP201503-2:数字排序