如何將QString轉換爲char *或者相反

最簡單直觀的方法是:

QString from;

char * ch_str;

ch_str = from.toLocal8Bit().constData();

 

 

通過QByteArray中轉一下,例如:
int main(int argc, char **argv)
{
    QApplication app(argc, argv);
    QString str1 = "Test";
    QByteArray ba = str1.toLatin1();
    const char *c_str2 = ba.data();
    printf("str2: %s", c_str2);
    return app.exec();   
}

還有其他多種方法:

方法一 -----------------------------------------
#define G2U(s) ( QTextCodec::codecForName("GBK")->toUnicode(s) )
#define U2G(s) ( QTextCodec::codecForName("GBK")->fromUnicode(s) )

QString str;
QCString cstr;

str = G2U("中文輸入");
cstr = U2G(str);

QCString有這樣一個重載運算符
operator const char * () const

可以這樣
printf("%s/n", (const char*) cstr);
或是copy出來
char buf[1024];
strcpy(buf, (const char*) cstr);

方法二 -----------------------------------------

如果是中文系統 直接用   (const char*) str.local8Bit()
例如
printf("%s", (const char*) str.local8Bit());

str是一個QString

方法三 -----------------------------------------
char str[64];
QTextCodec *textcod = QTextCodec::codecForName("GBK");
        QCString string1 = textcod ->fromUnicode(listbox1->currentText());
        strcpy(str,string1);

 

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/wanglei2258/archive/2009/09/11/4542018.aspx

發佈了15 篇原創文章 · 獲贊 6 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章