您的位置:首页 > 编程语言 > Qt开发

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

2013-01-29 20:19 585 查看
来看下面一个例子:

#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()是怎么实现的,以后得注意了,得照着前面那种方式写。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐