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