arg() 函數
QString的arg()函數可以自動替換掉QString中出現的占位符。
其占位符以 % 開始,后面是占位符的位置,例如 %1,%2 這種。
QString("[%1, %2]").arg(x).arg(y);
去除空白字符
頭文件:
#include <QString>
QString QString::simplified () const
函數描述:
返回一個字符串,該字符串已從開始和結束處刪除空白,并將內部包括ASCII字符’\t’,’\n’,’\v’,’\f’,’\r’和’ '.替換為‘ ’,如果替換后有兩個空格的話,只保留一個空格。
QString QString::trimmed() const
函數描述:
返回值為去除了 開頭和結尾 的空白字符串,這里的空白指QChar::isSpace()返回值為true,比如'\t','\n','\v','\f','\r'和' ';
QString 轉 Char *
- Qstring先轉為string,在轉為char* (不會出現中文亂碼)
Qstring fileName = "E://QT/game_type/1.txt";
std::string str = fileName.toStdString();
str.c_str()
- 借助QByteArray類
頭文件:
#include <QByteArray>
// 處理含有中文的字符串
Qstring str;
char* ch;
QByteArray ba = str.toUtf8();
ch=ba.data();
或者 ch = str.toUtf8().data();
// 處理英文/ASII碼,中文可能會出現亂碼
Qstring str;
char* ch = str.toLatin1().data();
char * 轉 QString
- 利用QSstring的構造函數
char str[] = "frtyguhijk";
Qstring ss;
ss = Qstring(str);
或者
QString ss(str);
中文亂碼問題:
ss.toUtf8().data()
- 用QString的靜態轉換函數獲取,如fromUtf8()、fromLocal8bit()、fromUtf16()
char str[] = "frtyguhijk";
Qstring ss = QString::fromUtf8(str);
判斷QString是否為空
isEmpty
QString().isEmpty(); // returns true
QString("").isEmpty(); // returns true
QString("x").isEmpty(); // returns false
QString("abc").isEmpty(); // returns false
isNull
QString().isNull(); // returns true
QString("").isNull(); // returns false
QString("abc").isNull(); // returns false
兩個QString的比較
QString :: compare()靜態方法用于比較兩個字符串。
QString::compare(QString , QString ,Qt::CaseInsensitive);
Qt::CaseSensitivity 為枚舉類型, 可取值Qt::CaseSensitive 和 Qt::CaseInsensitive, 表示匹配的靈敏度。
該方法返回一個整數。
- 如果返回值小于零,則第一個字符串小于第二個字符串。
- 如果它返回零,兩個字符串都是相等的。
- 如果返回值大于零,則第一個字符串大于第二個字符串。
QString1.compare(QString2)
QString::compare(QString1, QString2)
QString 與 數字 的轉換
把QString轉換為 double類型
QString str="123.45";
double val=str.toDouble(); // val=123.45
科學計數法形式轉換
bool ok;
double d;
d=QString("1234.56e-02").toDouble(&ok);
//ok=true;d = 12.3456.
把QString 轉換為 float形
QString str="123.45";
float d=str.toFloat(); // d=123.45
常整形 轉換為Qstring形
long a =63;
QString str=QString::number(a,16); // str="3f";
str=QString::number(a,16); // str="63";
字符串 section
返回字符串的一部分
QString section(QChar sep, int start, int end = -1, SectionFlags flags = SectionDefault) const;
QString section(const QString &in_sep, int start, int end = -1, SectionFlags flags = SectionDefault) const;
QString section(const QRegExp ®, int start, int end = -1, SectionFlags flags = SectionDefault) const;
QString section(const QRegularExpression &re, int start, int end = -1, SectionFlags flags = SectionDefault) const;
該字符串被視為由字符sep分隔的字段序列。返回的字符串包含從位置開始到位置結束的所有字段。
如果未指定end,則包含從位置start到字符串結束的所有字段。
字段的編號為0、1、2等,從左開始計數,以及-1、-2等,從右到左計數。
flags參數可以用來影響函數的某些方面的行為,
例如是否區分大小寫,是否跳過空字段,以及如何處理開頭和結尾分隔符;看到SectionFlags。
SectionFlag 取值 | 值 | 作用 |
---|---|---|
SectionDefault | 0x00 | 計算空字段,不包括前導和結尾分隔符,并且區分大小寫地比較分隔符 |
SectionSkipEmpty | 0x01 | 將空字段視為不存在,即在start和end方面不考慮它們 |
SectionIncludeLeadingSep | 0x02 | 在結果字符串中包含 前導分隔符(如果有的話) |
SectionIncludeTrailingSep | 0x04 | 在結果字符串中包含 結尾分隔符(如果有的話) |
SectionCaseInsensitiveSeps | 0x08 | 不區分大小寫地比較分隔符 |