QString提供了支援Unicode的字串處理方法。
標頭檔案:
#include <QString>
qmake設定:
QT += core
// 建立一個空的字串,length=0
QString string;
// 上面一句預設執行的就是下面 下麪的構造方法
string = QString((const char *)0);
// isNull 輸出true
qDebug() << string.isNull() << endl;
// length 輸出0
qDebug() << string.length() << endl;
// isEmpty 輸出true
qDebug() << string.isEmpty() << endl;
// 下面 下麪空字串不是null,輸出false
qDebug() << QString("").isNull() << endl;
// 下面 下麪空字串,輸出true
qDebug() << QString("").isEmpty() << endl;
QString b="Hello";
// 下面 下麪長度輸出5
qDebug() << b.length() << endl();
QString c="Hello";
// 下面 下麪組合字串,輸出Hello World
qDebug() << c.append(" World") << endl();
// 在前面插入字元
qDebug() << c.prepend(" ") << endl();
// 字串格式化輸出
QString firstName( "Zhang" );
QString lastName( "San" );
QString fullName;
fullName = QString( "First name is %1, last name is %2" ).arg( firstName, lastName );
// 與下面 下麪一句等價
fullName = QString( "First name is %1, last name is %2" ).arg( firstName).arg(lastName );
// 輸出 "First name is Zhang, last name is San"
qDebug() << fullName << endl;
const QString string( "Hello World!" );
// 輸出第3個位置的字元
qDebug() << string.at(3) << endl;
// 判斷是否包含目標字串
QString str1="Hello my world";
// N=true,不區分大小寫
bool N1=str1.contains ("he", Qt::CaseInsensitive) ;
// N=false,區分大小寫
bool N2=str1.contains ("he", Qt::CaseSensitive) ;
// 判斷開頭和結尾
QString str2="Hello my world";
bool N3=str2.endsWith ("ld", Qt::CaseInsensitive) ; // N=true,不區分大小寫
bool N4=str2.endsWith ("LD", Qt::CaseSensitive) ; // N=false,區分大小寫
bool N5=str2.startsWith ("he") ; // N=true,預設爲不區分大小寫
// 字串轉整形
QString string("10");
int b = string.toInt();
// 字串轉浮點
QString string("10.2");
float b = string.toFloat();
格式化輸出:
QString string("10");
float b = string.toFloat();
string=string.asprintf ("%.3f",b);
qDebug() << string << endl;
// 以下幾句等價
str=QString::number(total,'f',2);
str=QString::asprintf ("%.2f", total);
str=str.setNum(total,'f',2);
str=str.sprintf ("%.2f,total);
其它一些型別轉換方法:
// 轉整型
int toInt(bool * ok = Q_NULLPTR, int base = 10) const
long toLong (bool * ok = Q_NULLPTR, int base = 10) const
short toShort (bool * ok = Q_NULLPTR, int base = 10) const
uint toUInt (bool *ok = Q_NULLPTR, int base = 10) const
ulong toULong (bool *ok = Q_NULLPTR, int base = 10) const
// 轉浮點型
double toDouble(bool *ok = Q_NULLPTR) const
float toFloat (bool * ok = Q_NULLPTR) const
// 程式原型
Qstring &setNum (int n, int base = 10)
QString number (int n, int base = 10)
// 範例1,10進位制轉16進位制、2進位制顯示
QString str("15");
int val=str.toInt();//預設爲十進制
// str=QString::number(val, 16);//轉換爲十六進制的字串
str=str.setNum (val, 16); //十六進制
str=str.toUpper();
// 下面 下麪輸出F
qDebug() << str << endl;
str=str.setNum (val, 2) ; //二進制
// 下面 下麪輸出1111
qDebug() << str << endl;
// 範例2,二進制轉十進制、十六進制
QString str("1111");
bool ok;
int val = str.toInt(&ok, 2);
QString str1=QString::number (val, 10) ;//數位顯示爲十進制字串
// 輸出15
qDebug() << str1 << endl;
QString str2=str.setNum (val, 16) ; //顯示爲十六進制
str2=str2.toUpper();
// 輸出F
qDebug() << str2 << endl;