对于Qt项目开发中,常常会遇到QString和const char*的转化问题,Qt也提供了响应的API接口,可以把QString转化为QByteArray,然后再转化为const char *,具体代码如下:

QString string("helloWorld");
const char *str = string.toLatin1().data();

但是调用接口才发现,打印str时有时能够显示得到helloWorld有时候得到的却是乱码,通过查询文档发现调用toLatin1的过程中是把QString中的内容放到QByteArray中存储起来,如果再调用data的接口,放到QByteArray中的数据则会被清除(类似于栈变量析构),因此将上述代码变化一下则可以正确转化:

QString string("helloWorld");
QByteArray array = string.toLatin1();
const char *str = array.data();

但是存在一个问题,如果是这样的场景,如果const char*存在的生命周期比QByteArray要长的话,还是会出现const char*中的数据会被释放,const char*的数据乱码的情况,解决的方法可以额外深拷贝出一份数据保存下来或者用一个数组保存数据(如果是在对象中,将数组定义成成员变量就行了)

QString转化为const char *出现乱码问题相关推荐

  1. qt下QString转换为const char*字符串

    概述 本文直在说明将QString类型的变量转换为const char *类型. 实现 可以采用下面的方式来实现: QString.toStdString().c_str(); 示例 下面是一个示例: ...

  2. Qt QString 与 const char* 类型的转换

    Qt QString 与 const char* 类型的转换QString DATA; std::string str = DATA.toStdString(); const char* ch = s ...

  3. MFC之CString与const char* string 转换

    MFC开发时经常会遇到CString.string/std::string.char*等类型相互转换的问题,现将一些思考与心得记下来与大家分享: 一.CString强制类型转换为const char* ...

  4. Qt中QString、int、char、QByteArray、std::string【八大转换】

    1.int 转 QString //int 转 QString int m=1; QString b; b=QString::number(m) 2.QString 转int QString a=&q ...

  5. C++中const char*, string 与char*的转化

    C++中const char*, string 与char*的转化 原文:https://blog.csdn.net/zhang_alongzd/article/details/52790905 版权 ...

  6. char类型的实参与const char类型的形参不兼容_C++干货系列——顶层const和底层const...

    顶层 const 和底层 const 学C++的小伙伴是不是被const机制搞得晕头转向,永远都记不住哪个是指针不能变哪个是指针指向的对象不能变?纯靠记忆肯定不行,理解透彻才能一劳永逸.本文详细介绍了 ...

  7. QString包含中文时与char *转换

    方法1: 添加GBK编码支持: #include <QTextCodec>QTextCodec::setCodecForTr(QTextCodec::codecForName(" ...

  8. QString、int、char、QByteArray直接的相互转换

    一.int 转 QString int m=1; QString b; b=QString::number(m) 二.QString 转int QString a="1111" i ...

  9. C++ 字符串、string、char *、char[]、const char*的转换和区别

    1.字符串 字符串本质就是一串字符,在C++中大家想到字符串往往第一反应是std::string(后面简称string) 字符串得从C语言说起,string其实是个类,C语言是没有class的,所以C ...

最新文章

  1. piblog 0.2
  2. Java Object中的clone方法
  3. leetcode 983. Minimum Cost For Tickets | 983. 最低票价(动态规划)
  4. 浅谈 MySQL 的存储引擎(表类型)
  5. DXUT扩展之摄像机
  6. ggplot2分面柱状图柱子比例一致_R语言柱状图
  7. 遗传算法原理及其python实现
  8. 周立功CAN通讯(txt格式) 报文解析
  9. 小米盒子刷arm linux,最新小米盒子3s刷原生安卓系统图文教程!值得收藏
  10. 怎么用计算机做求余,怎样用计算器求余数
  11. 独上高楼望尽天涯路;为伊得人憔悴、衣带渐宽终不悔;几处早莺争暖树,乱花渐欲迷人眼;梅先菊后何须较、好似人生各有时;
  12. Hive3第五章:函数
  13. NBA数据爬取及存取
  14. 疫情之下要不要转行?
  15. Keil 中“last line of file ends without a newline”的解决
  16. 基于伽马变换自适应修正的全景首尾融合算法
  17. 逆波兰式的转换与计算(简单)
  18. Django针对上一篇和下一篇文章标题的实现逻辑
  19. 个人笔记:数据库——数据库如何进行备份?
  20. 一文搞懂Spring,堪称Spring源码终结者

热门文章

  1. 反序列化 还是记一下吧
  2. [开源JVM] yvm - 自制Java虚拟机
  3. Mybatis参数传递及返回类型
  4. PL/SQL 08 异常 exception
  5. 辨异 —— 行星 vs 恒星
  6. .net 笔记尝试(二)
  7. hdu2115: I Love This Game
  8. fckeditor文件管理器添加查看、修改、删除文件功能[php]修正下载地址
  9. [导入]javascript总结
  10. antd 表格树如何展开_如何分析工作,找出规律,使用excel大幅度提高工作效率...