文章目录
1、int和char相互转换
1.1 int转char —atoi
#include <stdlib.h>
int atoi( const char *str );
- 注意char转int时,字符串表示的数值大小不能大于int表示的最大值(2^31-1 = 2147483647),否则会出错
1.2 char转int—sprintf
#include <stdio.h>
int s;
char temp[64];
string str;
s = 2147483647;
sprintf(temp, "%d", s);
cout << temp << endl;
for (int i = 0; i < 64; ++i)
{
if (i == 10)
{
cout << (int) temp[i] << endl;
break;
}
cout << temp[i];
}
结果如下:
2147483647
21474836470
可以看出sprintf在将int型数值转换到char数组中后,自动为数值后面加上了’\0’(字符串结束符)
2、char和string相互转换
2.1 char转string—string构造函数
char arr[10] = {'-','1', '2', '3', '4'};
string str(arr);
cout << str << endl;
2.2 string转char—string的c_str()方法
char arr[10] = {'-','1', '2', '3', '4'};
string str(arr);//str是-1234
char arr[10];
memcpy(arr, str.c_str(), str.size());
memset(sarr + str.size(), 0, 1);//不要忘记最后添加字符串结束标志
string转char时需要注意:
- c_str()方法只是返回了一个const char*,存储内容在string内部,如果不想对其修改,完全可以直接使用;但是如果想对转换后的字符串操作,就需要定义变量或分配内存保存,这里采用了memcpy将字符串拷贝过来
- 在拷贝完后不要忘记加字符串结束标志。
3、int和string相互转换
3.1 int转string—to_string方法
int i = 10129;
string s = to_string(i);
3.2 string转int—std::stoi
int i = 10129;
string s = to_string(i);
int n = stoi(s);
cout << n << endl;
Q:
- 如何自己实现上述库函数?