怎樣把QString轉換為char *或者相反?

pamxy發表於2013-04-26

轉自:http://blog.csdn.net/qter_wd007/article/details/6011292

這個問題其實也屬於老生常談了。也有不少朋友聊過。

 

我這裡把它總結一下吧。

 

1.從QString轉換為char *

 

要實現把一個QString轉換為char *,一般遵循這樣的步驟:

 

第一步,對該QString物件呼叫QString的toLatin1()方法,以獲得該字串的latin1值。

 

注意toLatin1()的原型如下:QByteArray QString::toLatin1 () const

它將返回一個QByteArray。

 

示例:

QString       qstr = "convert"
QByteArray ba = qstr.toLatin1();

 

第二步,對第一步得到的QByteArray物件呼叫data()方法,以獲得指向儲存於這個陣列中資料的指標。

 

示例:

const char *cstr = ba.data();

 

完整的一個控制檯程式如下:

int main(int argc, char **argv)
{
    QApplication app(argc, argv);


    QString qstr = "convert";
    QByteArray ba = qstr.toLatin1();


    const char *cstr = ba.data();
    printf("cstr: %s", cstr);              //輸出顯示


    return app.exec();  
}

 

當然也有其他方法,基本的差異在於使用toLatin1()還是使用QString的toStdString方法,或者是QString的.toLocal8Bit()方法,後續步驟不變。大家可以自行試驗。

 

2.把char*轉換為QString。

 

最為方便的做法是以一個QLatin1String物件作為引數,來呼叫QString的建構函式。

 

示例:

const char *cstr;

QString qstr= QString(QLatin1String(cstr));


相關文章