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

char * 和 QString 类型转换

5
回复
5319
查看
[复制链接]
累计签到:1 天
连续签到:1 天
来源: 2018-11-16 16:52:43 显示全部楼层 |阅读模式
1Qter豆
最近在用Qt时遇到一个问题:
  char buf[10] = "asdfghj";
  QString data = QString(buf);
  QByteArray tmp = data.toAscii();
  char *result = tmp.data();

就是把 char * 类型转成 QString类型之后,字符串后被加了几个莫名其妙的字符,
打印 data 显示 "asdfghj\u0x00ff\u0x00ff\u\x00ff"

之后再转换回 char * 类型, result 跟最初的buf比就多了几个不能识别的字符;


不知道这是怎么回事?有没有人遇到过?

回复

使用道具 举报

累计签到:2100 天
连续签到:3 天
2018-11-16 19:04:07 显示全部楼层
先用0初始化一下,在赋值看下
回复

使用道具 举报

累计签到:9 天
连续签到:1 天
2018-11-19 10:31:39 显示全部楼层
char buf[10] = "asdfghj";
替换为:
char buf[10] = {0};
strcpy(buf, "asdfghj");
回复

使用道具 举报

累计签到:1 天
连续签到:1 天
2018-11-19 20:31:29 显示全部楼层
程默的叛逆者 发表于 2018-11-16 19:04
先用0初始化一下,在赋值看下

试了,不管用,刚复制后打印buf没问题!
回复

使用道具 举报

累计签到:1 天
连续签到:1 天
2018-11-19 20:34:40 显示全部楼层
猿来在这 发表于 2018-11-19 10:31
char buf[10] = "asdfghj";
替换为:
char buf[10] = {0};

不是赋值方式的问题,我的代码中实际给 buf 赋值是通过读文件 fd->read(buf,  len)  的方式赋的值,赋值前也做了初始化,在赋值后打印 buf 完全正常,但是转成QString后就有了莫名其妙的字符!
回复

使用道具 举报

累计签到:472 天
连续签到:1 天
2018-11-28 09:09:20 显示全部楼层
你用的char[10],十个字符,后面自然多了3个“\0”,你改成char[7]试下?
回复

使用道具 举报

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

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