(1)QString转成char*或者char数组。
QString data;
QByteArray tempData = data.toLocal8Bit();
char *value = (char*)tempData.data();
/*先将QString转为标准库中的string类型*/
QString data;
QByteArray tempData = data.toLocal8Bit();
std::string str = std::string(tempData);
/*将string转为char**/
char *value = (char*)str.c_str();
(2)char*或者char数组转成QString
char * value = "kkkkkkkk";
QString data = QString::fromLocal8Bit((const char *)value);
char *value = "kkkkkkkkk";
QString data = value;
(3)QString转成string
QString data;
QByteArray tempData = data.toLocal8Bit();
std::string str = std::string(tempData);
(4)string转成QString
std::string str;
QString data = QString::fromLocal8Bit(str.data());
注:自己在编写从QString到char*的时候犯了一个错误,将其封装函数之后直接赋值给一个char*,所以显示一直是乱码
老代码:
char * ipAddress = String2Char(info.ip);
char * AppSend::String2Char(QString data)
{
QByteArray tempData = data.toLocal8Bit();
return (char*)tempData.data();
}
新代码:
char ipAddress[16];
strcpy(ipAddress, String2Char(info.ip));
char * AppSend::String2Char(QString data)
{
QByteArray tempData = data.toLocal8Bit();
return (char*)tempData.data();
}