
QString类是Qt框架中的一个核心组件,设计用于方便、高效地处理Unicode字符串。与标准C++中的字符串处理方式相比,QString提供了更为丰富的API,支持国际化,并且内部使用UTF-16编码,能够处理世界上几乎所有的语言文字。
设计理念与功能特点
Unicode支持
QString内部采用UTF-16编码,使得它能够存储和处理多种语言的文本,满足国际化应用的需求。
丰富的API
提供了大量的方法来进行字符串的查询、构造、修改、比较和搜索等操作,简化了字符串处理的复杂性。例如,QString支持直接的字符串连接操作、数字与字符串之间的转换、子字符串的提取等。
高效的内存管理
通过共享数据和写时复制(copy-on-write)机制,QString在执行复制操作时能够保持高效的内存使用,避免不必要的数据复制。
正则表达式支持
QString与QRegExp和QRegularExpression类配合,提供了强大的正则表达式匹配和文本替换功能,方便进行复杂的文本处理。
主要函数接口
由于QString提供的接口极其丰富,下面是一些最常用的函数接口:
构造和赋值
-
QString():构造一个空字符串。 -
QString(const QString &other):拷贝构造函数。 -
QString(const char *str):从C字符串构造。 -
QString &operator=(const QString &other):赋值操作符。
字符串操作
-
int length()/int size():返回字符串的长度。 -
bool isEmpty():检查字符串是否为空。 -
void clear():清空字符串。
字符串比较
-
int compare(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive):比较两个字符串。 -
bool startsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive):检查字符串是否以某子串开始。 -
bool endsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive):检查字符串是否以某子串结束。
字符串修改
-
void append(const QString &str):追加字符串。 -
void prepend(const QString &str):在字符串前添加字符串。 -
QString &replace(const QString &before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive):替换字符串中的子串。
子串相关
-
QString substring(int position, int n):返回从指定位置开始的n个字符的子串。 -
QString left(int n):返回字符串左侧的n个字符。 -
QString right(int n):返回字符串右侧的n个字符。
转换和格式化
-
int toInt(bool *ok = nullptr, int base = 10):转换字符串为整数。 -
double toDouble(bool *ok = nullptr):转换字符串为双精度浮点数。 -
QString number(int n):将数字转换为字符串。
搜索和替换
-
int indexOf(const QString &str, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive):搜索子串首次出现的位置。 -
int lastIndexOf(const QString &str, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive):搜索子串最后出现的位置。
迭代和访问
-
QChar at(int position):返回指定位置的字符。 -
QChar operator[](int position):重载[]操作符以访问指定位置的字符。