qUtf8Printable/QStringLiteral/QByteArrayLiteral/QLatin1String

  • qUtf8Printable - 等於 QString().toUtf8().constData(),可縮短字數
  • QStringLiteral - 如果 compiler 支援 c++11,則會預先配好所定義的字串內容 (使用 UTF-16)。如果不支援 c++11,則此 macro 等於 QString::fromUtf8()
  • QByteArrayLiteral - 與 QStringLiteral 意義差不多,但是用來產生 QByteArray
  • QLatin1String - 比起 char * 直接傳給 QString 造成要由 UTF-8 轉換,QLatin1String 可以少掉 UTF-8 轉換這一部份,但是要轉成 QString 仍然要於 heap 配置記憶體出來
一些原則:
  1. 函式支援用 QLatin1String 的,則使用 QLatin1String 來定義字串
  2. 不支援 QLatin1String,僅支援 QString 的,則使用 QStringLiteral 來定義字串。縱使 compiler 不支援 c++11 也只是與由 char * 轉換同樣而已

留言

熱門文章