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