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)
:重载[]
操作符以访问指定位置的字符。