QString 問題

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 *

  1. 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()
  1. 借助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

  1. 利用QSstring的構(gòu)造函數(shù)
char str[] = "frtyguhijk";
Qstring ss;
ss = Qstring(str);

或者
QString ss(str);

中文亂碼問題:

ss.toUtf8().data()
  1. 用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 &reg, 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ū)分大小寫地比較分隔符

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容