int 转 string
- 1
第一种是to_string函数,这是C++11新增的,使用非常方便,简单查了下:C++11标准增加了全局函数std::to_string,以及std::stoi/stol/stoll等等函数(这几个就是string转int,long,以及long long)
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 转 int
- 1
string str;
int i = atoi(str.c_str());
- 2
C++11新增
同样, 可以使用 stol(long), stof(float), stod(double) 等
string str;
int i = stoi(str);
借助字符串流:
1. 标准库定义了三种类型字符串流:istringstream ostringstream stringstream
2. 看名字就知道这几种类型和iostream中的几个非常类似,分别可以读、写以及**读和写**string类型,它们也确实是从iostream类型派生而来的。
3. 要使用它们需要包含sstream头文件。
除了从iostream继承来的操作:
- sstream类型定义了一个有string形参的构造函数
stringstream stream(s);
创建了存储s副本的stringstream对象,s为string类型对象 - 定义了名为str的成员,用来读取或设置 stringstream对象所操纵的string值:
stream.str();
返回stream中存储的string类型对象
stream.str(s);
将string类型的s复制给stream,返回void
stringstream 双向转换示例:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
// int 转 string
int n = 123;
string str;
stringstream ss1;
ss1 << n;
// 1
ss1 >> str; // 与.str()皆可
cout << str << endl; // 123
// 2
str = ss1.str();
cout << str << endl; // 123
// string 转 int
str = "17";
stringstream ss2;
ss2 << str;
int i;
ss2 >> i;
cout << i << endl; // 17
return 0;
}