qt qstring 和 char *

将const char *类型的C风格字符串转换成QString也是很常见的需求,简单来说,QString的+=即可完成这个功能:

  
  
  
  
  1. str += " (1870)"

这里,我们将const char * 类型的字符串" (1870)"转换成为QString类型。如果需要显式的转换,可以使用QString的强制转换操作,或者是使用函数fromAscii()等。为了将QString类型转成const char *字符串,需要进行两步操作,一是使用toAscii()获得一个QByteArray类型对象,然后调用它的data()或者constData()函数,例如:

  
  
  
  
  1. printf("User: %s\n", str.toAscii().data()); 

为了方便使用,Qt提供了一个宏qPrintable(),这个宏等价于toAscii().constData(),例如:

  
  
  
  
  1. printf("User: %s\n", qPrintable(str)); 

我们调用QByteArray类上面的data()或者constData()函数,将获得QByteArray内部的一个const char*类型的字符串,因此,我们不需要担心内存泄漏等的问题,Qt会替我们管理好内存。不过这也暗示我们,注意不要使用这个指针太长时间,因为如果QByteArray被delete,那么这个指针也就成为野指针了。如果这个QByteArray对象没有被放在一个变量中,那么当语句结束后,QbyteArray对象就会被delete,这个指针也就被delete 了。

你可能感兴趣的:(qt qstring 和 char *)