Qt中QString对象使用toStdString().data()会产生错误

来源:互联网 发布:网络管理软件应用 编辑:程序博客网 时间:2024/06/01 10:48
来看下面一个例子:
#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()是怎么实现的,以后得注意了,得照着前面那种方式写。

原创粉丝点击