【QT】 常用字符串类型简介
常用字符串类型
| 类型 | 说明 |
|---|---|
| QChar | 1个UTF-16字符。 |
| QString | 由QChar组成的字符串。默认使用深拷贝。如果必须使用浅拷贝,可以通过fromRawData进行构建。 |
| QByteArray | 传统字符串,以\0结尾。不建议使用。当前只在保存raw数据,或者使用内存非常严格的情况下可以使用。 |
| QLatin1String | 纯US-ASCII (ANSI X3.4-1986)和Latin-1 (ISO 8859-1)编码情况下,对char * 进行的轻量级封装。直接对纯latin1数据进行处理。速度比操作unicode编码数据更快。 |
| QStringLiteral | 宏!在编译期间,将一个const char * 对象转换成QString对象。节约程序运行时的操作。 |
QStringLiteral详细
#define QStringLiteral(str) \
([]() noexcept -> QString { \
enum { Size = sizeof(QT_UNICODE_LITERAL(str))/2 - 1 }; \
static const QStaticStringData<Size> qstring_literal = { \
Q_STATIC_STRING_DATA_HEADER_INITIALIZER(Size), \
QT_UNICODE_LITERAL(str) }; \
QStringDataPtr holder = { qstring_literal.data_ptr() }; \
return QString(holder); \
}()) \
- 这里是一个匿名函数,不抛任何异常。返回值是QString。
- 创建一个enum数值 Size,按照按照当前字符串的长度除以2,再刨除后面的\0.
- 利用Size创建一个QStaticStringData类型的数据qstring_literal,会返回qstring_literal的data_ptr(),直接转换成QString。
- 该字符串将存储在编译的Obect文件的只读段(Read-only segment)中。
|
原创内容,转发请注明出处。 博客园:https://www.cnblogs.com/gikoo 作者:Giraffe & Kangaroo |
|---|
浙公网安备 33010602011771号