1. string 转换为 int

(1) 利用 stringstream

1
2
3
4
stringstream ss;
long i;
ss << str;
ss >> i;

(2)利用 C++ 函数 stoi()

stoi()string库中的函数,它的参数是string

1
2
string str="123";
int l = stoi(str);

2. int 转换为 string

(1) 利用 stringstream

1
2
3
4
5
int l = 15;
string str;
stringstream ss;
ss << l;
str = ss.str();

(2) 利用 to_string() 函数

1
string str = to_string(1);

3. string 转换为 C 字符串

(1) 利用 stringstream

1
2
3
4
5
6
string str("hhhh");
char ch[5];
stringstream ss;
ss << str;
ss >> ch;
//char 数组长度不做考虑

(2) 利用 string 类的成员函数 c_str()

注意不能直接用 const char 对 char 类型进行初始化或赋值

1
2
3
4
5
string str("hhhh");
char *p = c_str(str);

char x[5];
strcpy(x, str.c_str());

(3) 利用 string类 的 data() 函数

1
2
string str="abc"; 
char *p=str.data();

(4) 调用 string类 的 copy() 函数

1
2
3
4
string str="hello"; 
char p[40];
str.copy(p,5,0); //这里5,代表复制几个字符,0代表复制的位置
*(p+5)='/0'; //要手动加上结束符

4. C 字符串转换为 string

(1) 直接赋值

C++ 已对 string 进行了重载 可以在定义时直接初始化,或者赋值

1
2
3
4
5
string x;
const char *y = "hello";
const char z[] = "hello world";
x = y;
x = z;

5. C 字符串转换为 int

(1) 利用 stringstream

1
2
3
4
stringstream ss;
long l;
ss << ch;
ss >> l;

(2) 利用 C 函数 atoi

atoi是c里面的函数,因此在用string时,必须调c_str()方法将其转为char*的字符串。

1
2
int i = atoi(ch);
int j = atoi(str.c_str());

(3) 利用 sscanf

1
2
3
4
int i;
sscanf("17","%D",&i); // 17
//sscanf("17","%X",&i); // 23
//sscanf("0X17","%X",&i); // 23

6. int 转换为 C 字符串

(1) 利用 stringstream

1
2
3
stringstream ss;
ss << i;
ss >> ch;

(2) 利用 sprintf

1
2
3
char *ch;
int i;
sprintf(ch,"%d", i);

本文参考自:

c++ 中 char 与 string 之间的相互转换问题

C++ 中几种类型相互转换