找回密码
 立即注册
收起左侧

QString转char *出现乱码

5
回复
11418
查看
[复制链接]
累计签到:4 天
连续签到:1 天
来源: 2016-3-31 13:05:23 显示全部楼层 |阅读模式
1Qter豆
转换函数,断点变量值,测试代码都在图片中。为什么不管中文英文,转换成char *都是乱码

附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册
回复

使用道具 举报

累计签到:957 天
连续签到:1 天
2016-3-31 15:43:57 显示全部楼层
你仔细看看你的转换函数,你返回了一个指针,而这个指针是局部变量,函数结束以后局部变量的内存释放了。所以你返回的是一个野指针。。。。。建议巩固下C++基础,还有就是QString有自带的方法转成char*,例如QObject:String("download success.").toLocal8Bit().data();

点评

函数结束后ch 的值到时能传出去,只是它本身指向的ba没了  详情 回复 发表于 2016-4-3 10:49
回复

使用道具 举报

累计签到:615 天
连续签到:1 天
2016-4-3 10:49:55 显示全部楼层
wdmxtk002 发表于 2016-3-31 15:43
你仔细看看你的转换函数,你返回了一个指针,而这个指针是局部变量,函数结束以后局部变量的内存释放了。所 ...

函数结束后ch 的值到时能传出去,只是它本身指向的ba没了
回复

使用道具 举报

累计签到:27 天
连续签到:1 天
2016-5-13 17:48:09 显示全部楼层
QString a = "abc";
a.toLatin1 ();
回复

使用道具 举报

累计签到:27 天
连续签到:1 天
2016-5-13 17:50:15 显示全部楼层
hjbqly 发表于 2016-5-13 17:48
QString a = "abc";
a.toLatin1 ();

QTextCodec::setCodecForTr(QTextCodec::codecForName("system"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("system"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("system"));
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
把这个放main函数就行了
回复

使用道具 举报

累计签到:27 天
连续签到:1 天
2016-5-13 17:50:49 显示全部楼层
hjbqly 发表于 2016-5-13 17:48
QString a = "abc";
a.toLatin1 ();

QTextCodec::setCodecForTr(QTextCodec::codecForName("system"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("system"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("system"));
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
把这个放main函数就行了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了