QString与string之间的转换

在做Qt方面的项目的时候,遇到了QString转std::string的问题,查了一下Qt的Assistant,找到这个函数:std::string QString::toStdString () const,拿来实现一下,OK,不由感慨一下,Qt还是真是强大,居然考虑到这么周到。

就这样,一直用下去,等到马上要给领导看到的时候想起来这段时间一直在debug下开发和测试程序,一直没有在release下运行下,于是马上生成一个release版本的程序,打开程序,不到两秒钟,死掉了,重启,还是这样,意识到自己犯了一个很大的错误,但是临近了检查就先debug下运行吧,后续再查找原因。

领导检查完毕之后,赶紧网上查找解决release下问题的方法,原来还可以将release设置成可调试模式,各种设置之后,单步调试之后发现,就是这个QString转string出了问题,但是怎么在debug下怎么没有这样的问题呢,自己猜测是编码的不同的原因,release下也简化了编码方式,导致了在release模式下,两者的编码方式不一样,既然问题出来了,就得想出来解决办法吧,从最基本的方法做起,把QString先转换成char*,然后将char*转换成string,代码实现如下:

	QString folderPathQt = "C:\ssss";
	QByteArray arrays = folderPathQt.toAscii();
	char *str_c = arrays.data();
	string folderPath = string(str_c);

程序跑起来测试一下,正确,搞定!

但是为什么会有这种问题呢?上网搜一下,有人已经写出了这个QString与string之间的转换问题,通过这个代码可以知道,确实是编码原因。

QString和string的转换我在这就写了,这篇文章中讲得很清楚了。值得一说的是开发人员平时要注意的事情,就是在debug下做开发,debug下运行没问题,一定要在release下运行,看是否正确,这个是一个好的习惯,网上已经很多大牛都这样说,不过虽然遇到这个问题花费了一些功夫,但是好事多磨,有了这次教训,以后就注意了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值