关于QString的常见用法(详细讲解)

QString类提供一个unicode字符串。在QT软件开发平台中常用到的一种变量类型,其提供了很多方便的应用方法。下面介绍一些关于QString的常见用法。

1.字符串末尾追加

//example 1
   QString str="hello";
   str.append("world");
   qDebug() <<str;    //str=hello world

//example 2
   QString str="hello";
   str=str+"world";
   qDebug() <<str;     //str=hello world

//example 3
   QString str="hello";
   str+="world";
   qDebug() <<str;     //str=hello world

2.取出字符串中指定位置的字符

    QString str="hello world";
    char ch;
    ch=str.at(1).unicode();
    qDebug() <<ch;  //ch=e

3.从字符串末尾删除若干个字符

    QString str="hello world";
    str.chop(2);
    qDebug() <<str; //str= hello wor

4.清空字符串

    //example 1
    QString str="hello world";
    str.clear();
    qDebug() <<str.size(); //str=""

    //example 2
    QString str="hello world";
    str="";
    qDebug() <<str.size(); //str=""

5.字符串比较

    int x = QString::compare("aUtO", "AuTo", Qt::CaseInsensitive);  // x == 0
    int y = QString::compare("aUtO", "AuTo", Qt::CaseSensitive);    // x > 0

    int z = QString::compare("auto", "Car", Qt::CaseSensitive);     // y > 0
    int k = QString::compare("auto", "Car", Qt::CaseInsensitive);   // z < 0

    //CaseInsensitive:不区分大小写  CaseSensitive:区分大小写

 6.字符串str1是否包含str2字符串

    QString str1 = "Peter Pan";
    QString str2 = "peter";
    bool rel;
    rel=str1.contains(str2, Qt::CaseInsensitive);   //CaseInsensitive:不区分大小写
    qDebug() <<rel; // returns true

 7.字符串str2在字符串str1中出现过几次

    QString str1 = "HELLO world hello world";
    QString str2 = "hello";
    int rel;
    rel=str1.count(str2, Qt::CaseInsensitive); //搜索不区分大小写
    qDebug() <<rel; // rel=2

 8.字符串str1是否以str2结尾

    QString str = "Bananas";
    str.endsWith("anas");         // returns true
    str.endsWith("pple");         // returns false
            

9.搜索字符串str2在字符串str1第一次出现的位置

    QString str1 = "sticky question"; //包含了2个 “sti”
    QString str2 = "sti";

    //从位置0开始搜索
    str1.indexOf(str2);               // returns 0  (第一次出现位置0))

    //从位置1开始搜索
    str1.indexOf(str2, 1);            // returns 10 (第一次出现位置10))

    //从位置10开始搜索
    str1.indexOf(str2, 10);           // returns 10 (第一次出现位置10)

    //从位置11开始搜索
    str1.indexOf(str2, 11);           // returns -1 (不存在)

10.在字符串str1指定位置中插入str2

    QString str1 = "Meal";
    QString str2 = "ontr";

    str1.insert(1, str2); //从位置1开始插入
    // str1 == "Montreal"

11.判断字符串str是否为空,是否没有字符

    //字符串没有字符
    QString().isEmpty();            // returns true
    QString("").isEmpty();          // returns true
    QString("x").isEmpty();         // returns false
    QString("abc").isEmpty();       // returns false
    
    //字符串为空
    QString().isNull();             // returns true
    QString("").isNull();           // returns false
    QString("abc").isNull();        // returns false

12.计算字符串str长度

    QString str = "hello";
    int rel=str.length();
    qDebug() <<rel; // rel=5

13.从字符串str1中指定位置截取字符

    QString str1 = "Nine pineapples";

    //从位置5开始截取,截取4个字符
    QString str2 = str1.mid(5, 4);      // str2 == "pine"
     //从位置5开始截取,截取到最后
    QString str3 = str1.mid(5);         // str2 == "pineapples"

14.从字符串str中指定位置开始移除若干个字符

    QString str = "Montreal";
    //从位置1开始,移除4个字符
    str.remove(1, 4);// str == "Meal"

15.从str1字符串中指定位置开始替换若干个字符

    QString str1 = "Say yes!";
    QString str2 = "no";

    //从位置4开始,替换3个字符
    str1.replace(4, 3, str2); // str1 == "Say no!"

16.以指定字符对字符串进行分割,将分割后的某一段取出 

    QString str;
    QString csv = "forename,middlename,surname,phone";
    QString path = "/usr/local/bin/myapp"; // 第一个字段是空的
    QString::SectionFlag flag = QString::SectionSkipEmpty;

    //以“,”为分隔符,将从左往右的第2段返回
    str = csv.section(',', 2, 2);   // str == "surname"
    qDebug() <<str;
    //以“/”为分隔符,将从左往右的第3段到第4段返回
    str = path.section('/', 3, 4);  // str == "bin/myapp"
    qDebug() <<str;
    //以“/”为分隔符,将从左往右的第3段(忽略前面的空字段)
    str = path.section('/', 3, 3, flag); // str == "myapp"
    qDebug() <<str;
    
    //前面符号表示从右往左计数
    str = csv.section(',', -3, -2);  // str == "middlename,surname"
    str = path.section('/', -1); // str == "myapp"

    //这里除了可以以单个字符','为分割符外,还可以以"**"字符串为分割符号,可自行实验

17.数字转字符串

    QString str;
    
    //10代表以10进制转换成字符串(允许范围2~36)
    str.setNum(1234,10);       // str == "1234"
    //'g'代表精度
    str.setNum(12.34,'g',10);       // str == "12.34"

18.格式化转化为字符串

    QString str;
    int value=1998;
    str.sprintf("value=%d",value);
    qDebug() <<str; //str="value=1998"

19.判断字符串str是否以字符串str2开头

    QString str = "Bananas";

    str.startsWith("Ban",Qt::CaseSensitive);         // returns true
    str.startsWith("ban",Qt::CaseInsensitive);       // returns true
    str.startsWith("Car",Qt::CaseSensitive);         // returns false

20.字符串str转化为数值

    //example 1      QString >> double
    bool d;
    d = QString( "1234,56" ).toDouble(&ok); // ok == false
    d = QString( "1234.56" ).toDouble(&ok); // ok == true, d == 1234.56

    //exapmle 2      QString >> folat
    QString str1 = "1234.56";
    str1.toFloat();             // returns 1234.56

    bool ok;
    QString str2 = "R2D2";
    str2.toFloat(&ok);          // returns 0.0, sets ok to false

    //exapmle 3     QString >> int 
    QString str = "FF";
    bool ok;
    //16表示十六进制
    int hex = str.toInt(&ok, 16);       // hex == 255, ok == true
    //10表示十进制 转换失败
    int dec = str.toInt(&ok, 10);       // dec == 0, ok == false

21.将字符串str中所有的字母转化为小写字母或大写字母

    //example 1   大写转小写
    QString str = "The Qt PROJECT";
    str = str.toLower();        // str == "the qt project"

    //example 2   小写转大写
    QString str = "TeXt";
    str = str.toUpper();        // str == "TEXT"

22.从指定位置截断字符串str

    QString str = "Vladivostok";
    str.truncate(4);    // str == "Vlad"

23.QString支持的操作符号有:

用于字符串之间比较:"!="  "<" "<=" "==" ">="

用于字符串之间传递:"+=" "="

 

《聪明在于勤奋,天才在于积累——华罗庚 》

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值