#include <QtGui/QApplication>
#include <QString>
#include <stdio.h>
int main(int argc, char *argv[])
{
QString m("china");
QString n("great");
const char *mstr = m.toStdString().data();
printf("mstr = %s\n", mstr);
const char *nstr = n.toStdString().data();
printf("nstr = %s\n", nstr);
return 0;
}
輸出結果顯而易見:
mstr = china
nstr = great
但如果我這樣寫:
#include <QtGui/QApplication>
#include <QString>
#include <stdio.h>
int main(int argc, char *argv[])
{
QString m("china");
QString n("great");
const char *mstr = m.toStdString().data();
const char *nstr = n.toStdString().data();
printf("mstr = %s\n", mstr);
printf("nstr = %s\n", nstr);
return 0;
}
答案應該是不變的,可偏偏不是這樣,答案是:
mstr = great
nstr = great
我在做畢設的時候遇到字符串輸出亂碼的問題就是這裏搞的鬼,一開始還不相信,後來就寫了這麼個小程序試了一下,果真有問題。不知道Qt中這個toStdString().data()是怎麼實現的,以後得注意了,得照着前面那種方式寫。