QStringをchar*に変換する方法

2637 ワード

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);