1、string转const char*
std::string str = "HelloWorld!"; //初始化string类型,并具体赋值
const char* constc = nullptr; //初始化const char*类型,并赋值为空
constc= str.c_str(); //string类型转const char*类型
2、string转char[]
//方法一
std::string str = "HelloWorld!"; //初始化string类型,并具体赋值
char arrc[20] = {0}; //初始化char[]类型,并赋值为空
for (int i = 0; i < str.length(); i++) //string类型转char[]类型
{
arrc[i]=str[i];
}
//注意:若数组arr没有初始化,则最后一定要加上结束符arr[str.length()] = '\0';否则arr最后可能出现乱码。
//方法二(推荐)
std::string str = "HelloWorld!"; //初始化string类型,并具体赋值
char arrc[20] = {0}; //初始化char[]类型,并赋值为空
strncpy(arrc, str.c_str(), sizeof(arrc) - 1);//strncpy字符串拷贝安全写法
arrc[sizeof(arrc) - 1] = 0; //即string先转化为char*,再转化为char[]
3、char*转string
char* c = "HelloWorld!"; //初始化char* 类型,并具体赋值
std::string str; //初始化string类型
str= c; //char*类型转string类型
4、char * 转const char *
char* c = "HelloWorld!"; //初始化char* 类型,并具体赋值
const char* constc = nullptr; //初始化const char* 类型,并具体赋值
const c= c; //char*类型转const char* 类型
5、char*转char[]
char* c = "HelloWorld!"; //初始化char* 类型,并具体赋值
char arrc[20] = { 0 }; //初始化char[] 类型,并具体赋值
strncpy_s(arrc,c,20); //char*类型转char[] 类型
6、char[]转为其他类型
char arrc[20] = "HelloWorld!"; //初始化char[] 类型,并具体赋值
std::string str; //初始化string
const char* constc = nullptr; //初始化const char*
char*c = nullptr; //初始化char*
str= arrc; //char[]类型转string类型
constc= arrc; //char[]类型转const char* 类型
c= arrc; //char[]类型转char*类型
7、QString与String互转
std::string s = qstr.toStdString();//QString转换String
QString qstr2 = QString::fromStdString(s);//String转换QString
总结:
1、变成string,直接赋值。
2、char[]变成别的,直接赋值。
3、char变const char容易,const char变char麻烦。<const_cast><char*>(constchar*);
4、string变char要通过const char中转。