1. 程式人生 > >【QT】QT的學習:char×跟QString、string之間的轉換

【QT】QT的學習:char×跟QString、string之間的轉換

(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();

}