首页 > 其他 > 详细

QString转化为char *的方式

时间:2020-06-23 22:51:03      阅读:77      评论:0      收藏:0      [点我收藏+]

Qt帮助文档中给的一个demo

QString tmp = "test";
QByteArray text = tmp.toLocal8Bit();
char * pCh = new char[text.size()+1];
strcpy(pCh, text.data());
delete [] data;

 

别的文章中也给出了一些方法

   char *chStr = NULL;
   QByteArray ba = str.toLatin1();
   chStr = (char *)malloc(ba.length() + 1);
   memset(chStr, 0, ba.length());
   memcpy(chStr, ba.data(), ba.length());
   chStr[ba.length()] = \0;

上面的代码可以进一步优化

   char *chStr = NULL;
   QByteArray ba = str.toLatin1();
   chStr = (char *)malloc(ba.length() + 1);
   memset(chStr, 0, ba.length() + 1); //既然分配了这么多就全memset掉,官方帮助文档没有使用memset,估计是它分配的内存全部给用上了。人家有这个自信~
   memcpy(chStr, ba.data(), ba.length() + 1);//既然ba.data()的最后也是‘\0’,就直接全拷贝好了

 

ps:

说到new之后memset,可以采用更简单的方式来实现:

char *p = new char[10]();

它等价于

char *p = new char[10];
memset(p, 0, 10);

 

 

 

      char *chStr = NULL;
   QByteArray ba = str.toLatin1();
   chStr = (char *)malloc(ba.length() + 1);
   memset(chStr, 0, ba.length());
   memcpy(chStr, ba.data(), ba.length());
   chStr[ba.length()] = ‘\0‘;

QString转化为char *的方式

原文:https://www.cnblogs.com/Stephen-Qin/p/13184760.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!