• 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
  • 相关阅读:
    【Python】多态、协议和鸭子类型
    【Python】魔法方法之__call__,将对象当方法使用
    【Python】策略模式
    【Python】if 后怎么就可以跟对象?变量交换写法是语法糖吗?
    【Python 库】NumPy 超详细教程(3):ndarray 的内部机理及高级迭代
    【Python 库】NumPy 超详细教程(2):数据类型
    【Python 库】NumPy 超详细教程(1):NumPy 数组
    【杂谈】10 年三线小城 IT 开发的感悟
    【PostgreSQL】安装及中文显示
    【Python 库】轻量级 ORM 框架 peewee 用法详解之——增删改查
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/5962990.html
Copyright © 2020-2023  润新知