一、string转为char* char[]
主要通过string类内部的几个方法:data(),c_str(),copy
1、data()方法返回 const char* 格式的字符串数据
比如
string str = "world";
const char *p = str.c_data();//要加const或者等号右边用char*
char *q = (char*)str.c_data();//同上,要加const或者等号右边用char*
cout << p << endl << q << endl;
q[5] = '!'; q[6] = '\0';//手动加结尾
cout << q << endl;
根据上面运行结果,可知,通过char转换,可以继续进行后续修改。
2、c_str()方法返回 const char 格式的字符串数据
代码就不贴了,将data()换为c_str()即可,运行结果是一样的
3、copy方法
string str = "world123";
char p[6];//此处不能使用char* p;或者char* p=" ";或者char* p="";
str.copy(p, 5, 0);
*(p + 5) = '\0';
cout << p << endl;
以上代码在部分IDE上可能报错C4996,可以通过修改项目属性-C+±预处理器-预处理器定义无视warning,在预处理器定义加上_SCL_SECURE_NO_WARNINGS即可。(想试试copy方法的同学建议试完后改回来)
注意!本方法需要手动加’\0’,并且不能copy到char*;
二、char*、char[]转为string
直接赋值
string s1,s2;
char *p = "hello";//直接赋值
char q[6]="world";
s1 = p;
s2 = q;
cout << s1 <<endl << s2 << endl ;
三、string转为char[]
通过string类的length()方法,for循环赋值即可
C++中string char* int 之间的转换方法:
https://blog.csdn.net/jojozym/article/details/104791775
来源:CSDN
作者:jojozym
链接:https://blog.csdn.net/jojozym/article/details/104792257