QT QString類


字符串有如下幾個操作符
QString提供了一個二元的"+"操作符用於組合兩個字符串,並提供了一個"+="操作符用於將一個字符串追加到另一個字符串的末尾,例如:
QString str1="welcome";
str1=str1+"to you !";//str1="welcome to you !"
QString str2="hello ,";
str2+="world!"//str2="hello ,world!"
QString::append()函數具有與"+="操作符同樣的功能,實現在一個字符串的末尾追加另一個字符串,例如:
QString str1="welcome";
QString str2="to";
str1.append(str2);//str1="welcome to"
str1.append("you !");//str1="welcome to you!"
組合字符串的另一個函數QString::sprintf(),此函數支持的格式定義符和C++庫中的函數sprintf()定義一樣,例如
QString str;
str.sprintf("%s","welcome");//str="welcome"
str.sprintf("%s","to you!");//str="to you!"
str.sprintf("%s %s","welcome ","to you");//str="welcome to you"
void Dialog::add()
{
    QString s1=edit1->text();
    QString s2=edit2->text();
    QString s3=s1+s2;
    s3+="end!";
    /*
     * QString內部維護了字符串數組
    */
    const char *arr=s3.toStdString().data();
    QString s4=arr;
    QString s5;
    //注意sprintf的參數是字符串,而不是QString對象
    s5.sprintf("%s","welcome ");
    s5.sprintf("%s","to you!");
    s5.sprintf("%s - %s",s1.toStdString().data(),s2.toStdString().data());
    label1->setText(s5);
}

 

比較兩個字符串也是經常使用的功能,QString提供了多種比較手段。
operator<(const QString &);比較一個字符V換是否小於另一個字符串,如果是,則返回true。
operator<=(const QString &);比較一個字符串是否小於等於另一個字符串,如果是,則返回true。
operator==(const QString &);比較兩個字符串是否相等,如果相等,則返回true。
operator>=(const QString &);比較一個字符串是否大於等於另一個字符串,如果是,則返回true。

 

QString::toInt()函數將字符串轉換為整型數值,類似的函數還有toDouble、toFloat()、toLong()、toLongLong()等。下面例子說明其用法:
QString str="125";
bool ok=false;
int hex=str.toInt(&ok,16);//ok=true,hex=293
int dec=str.toInt(&ok,10);//ok=true,dec=125

 

QString提供的字符編碼集的轉換函數將會返回一個const char*類型版本的QByteArray,即構造函數QByteArray(const char *)構造的QByteArray對象。
QByteArray類具有一個字節數組,它既可以存儲原始字節(raw bytes).也可以存儲傳統的以"0"結尾的8位的字符串,在QT中,
使用QByteArray比使用const char *更方便,且QByteArray也支持隱式共享,轉換函數有以下幾種 toLatinl()返回一個Latin-l(ISO08859-1)編碼的8位字符串。 toUtf8(),返回一個UTF-8編碼的8位字符串(UTF-8是ASCLL碼的超級,它支持整個unicode字符集) QString s=tr("A"); QByteArray buf1=s.toUtf8(); QString tmp; tmp.sprintf("%x",buf1.constData()[0]);
void Dialog::add()
{
    QString s1=edit1->text();
    QString s2=edit2->text();
    /*
     * tr()是QObject提供的一個函數,為多語言而准備的,所有的QT類都是繼承於QObject
     * 例如英語中的字符串"ok",在中文中是"好",但是這兩個字符串所占用的內存空間並不相同
     * tr()函數為多語言的字符串留出內存空間
     *
    */
    QString s3=tr("A");
    QByteArray buf1=s3.toUtf8();
    QString tmp;
    tmp.sprintf("%x",buf1.constData()[0]);
    /*這里打印的是十六進制的ascll碼*/
    label1->setText(tmp);
}

 

一個NULL字符串就是使用QString的默認構造函數或者使用"(const char *)0"作為參數的構造函數創建的QString字符串對象;而一個空字符串是
一個大小為0的字符串。一個NULL字符串一定是一個空字符串,二一個空字符串未必是一個NULL字符串。例如:
QString().isNull();//結果為true
QString().isEmpty();//結果為true
QString("").isNull();//結果為false
QString("").isEmpty();//結果為true

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM