QString转化为char *的方式
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);
新战场:https://blog.csdn.net/Stephen___Qin