C++中char,string与int类型转换是一个不太好记的问题,在此总结一下,有好的方法会持续更新。
1.char与string
char是基础数据类型,string是封装了一些操作的标准类,在使用上各有千秋。
1.1 char *或者char [ ]转换为 string时,可以直接赋值。
string x;
string y;
char *ptr1 = "sakura";
char ptr2[]= "waseda";
x = ptr1;
y = ptr2;
1.2 string转换为char*或者char[ ]时,有3种方法。
1.2.1 使用string内置c_str()函数。注意不直接赋值,因为string类对象最后会析构导致左值成为空指针。附加结束符\0
string x = "waseda";
char *ptr;
strcpy(ptr,x.c_str());
1.2.2 使用string内置data()函数。不附加结束符\0
string x = "waseda";
char *ptr;
strcpy(ptr,x.data());
1.2.3 使用string内置copy()函数。不附加结束符\0
string str="waseda";
char ptr[10];
str.copy(ptr,5,0);
2.char与int
2.1 char数字 转int ,直接减'0'就好。char数组则使用atoi,stringstream。
char u = '3';
int num0 = u-'0';
char x[] = "223";
char *k = "233";
int num1 = atoi(x);
int num2 = atoi(k);
//stringstream
int num0;
char x[10] = "233" ;
stringstream ss;
ss<<x;
ss>>num0;
2.2 int 转char数字,直接加'0'。char数组可以使用atoi,sprintf,stringstream。
2.2.1 itoa函数windows平台独有,不通用。第三个参数为使用的进制。
int num0 = 233;
char x[10] ;
itoa(num0,x,10);
2.2.2 sprintf函数
int num0 = 233;
char x[10] ;
sprintf(x, "%d", num0);
2.2.2 stringstream,重复使用记得clear。
int num0 = 233;
char x[10] ;
stringstream ss;
ss<<num0;
ss>>x;
3.string与int
3.1 int 转string,有std内置to_string函数与stringstream流。
3.1.1 to_string
string str ;
int num=233;
str = to_string(num);
3.1.2 stringstream,可以输出到string或者使用流的str()函数。
int num = 233;
string str ;
stringstream ss;
ss<<num;
ss>>str;
cout<<str<<endl;//第一种
cout<<ss.str()<<endl;//第二种
3.2 string转int,有先转为char然后int的方法,std内置stoi与stringstream
3.2.1 使用c_str(),atoi()中转
int num ;
string str="233" ;
stringstream ss;
num = atoi(str.c_str());
3.2.2 stoi
int num ;
string str="233" ;
stringstream ss;
num = stoi(str);
3.2.3 stringstream
int num0;
string str = "233" ;
stringstream ss;
ss<<str;
ss>>num0;
来源:CSDN
作者:srplus
链接:https://blog.csdn.net/srplus/article/details/104382501