zoukankan      html  css  js  c++  java
  • QString

    字符串类(QString):

    在Qt官方文档中是这样描述QString的:The QString class provides a Unicode character string.
    我们可以将做C++中的string,但QString提供了更多有用的操作
    在使用QString时需要包含头文件 #include <QString>

    QString的常见操作:

    组合字符串:

    1.使用二元操作符"+"组合两个字符串

    QString str1= "Hello", str2("World");
    QString str3 = str1 + str2 + "!";
    qDebug() << str3;

    2.使用"+="操作符

    QString str1 = "Hello";
    str1 += " World!";
    qDebug() << str1;

    3.也可以使用QString::append()函数实现在一个字符串末尾添加一个字符串

    QString str1 = "Hello";
    str1.append(" World!");
    qDebug() << str1;

    4.使用QString::sprintf()也可以组合字符串,其支持的格式与C++中sprintf()函数定义的一样

    QString str1;
    str1.sprintf("%s", "Hello ");
    str1.sprintf("%s %s", "Hello ", "World!");
    qDebug() << str1;

    5.相比于QString::sprintf(),QString::arg()或许是个更好的选择,该函数的重载可以处理很
    多种数据类型,此外还提供额外的参数对字段宽度、数字基数、浮点数精度进行控制,且它类型
    安全,完全支持Unicode,并且允许改变"%n"参数的顺序。

    QString str1;
    str1 = QString("%1 is a %2.").arg("Bob").arg("boy");
    qDebug() << str1;

    除了组合字符串之外,还提供了很多其他操作:
    QString::insert():在指定位置后插入一个字符串
    QString::prepend():在源字符串开头插入一个字符串
    QString::replace(): 用指定字符串代替源字符串中的指定内容

    QString::trimmed():删除字符串两端的空白字符
    QString::simplified(): 删除字符串两端的空白字符,并用单个空白字符代替字符串中出现的空白字符
    注意:前面三个函数会对源字符串本身做出更改,而后两个函数返回的是源字符串被操作后所
    得内容的一个新的字符串,源字符串本身不会被修改

    QString str1 = "  AAA   BBB CCC   ";
    qDebug() << str1;
    str1.insert(2, "ZZZ");
    qDebug() << str1;
    str1.prepend("DDD");
    qDebug() << str1;
    str1.replace("AAA", "111");
    qDebug() << str1;
    str1 = str1.trimmed();
    qDebug() << str1;
    str1 = str1.simplified();
    qDebug() << str1;
        
    /* 程序输出:
    "  AAA   BBB CCC   "
    "  ZZZAAA   BBB CCC   "
    "DDD  ZZZAAA   BBB CCC   "
    "DDD  ZZZ111   BBB CCC   "
    "DDD  ZZZ111   BBB CCC"
    "DDD ZZZ111 BBB CCC"
    */ 

    查询字符串数据:

    1.QString::startsWith()用于判断字符串是否由指定字符串开头,可以设置是否大小写敏感(默认为大小写敏感)
    2.QString::endsWith()用于判断字符串是否由指定字符串结尾,可以设置是否大小写敏感(默认为大小写敏感)
    3.QString::contains()用于判断字符串内是否含有指定子串

    QString str1 = "Hello World!";
    
    if (str1.startsWith("Hello", Qt::CaseSensitive))
        qDebug() << "str1 start with Hello";
    
    // 设为大小写不敏感
    if (str1.endsWith("world!", Qt::CaseInsensitive))
        qDebug() << "str1 end with world";
    
    if (str1.contains("Hello"))
        qDebug() << "str1 contains Hello";
    
    /* 程序输出:
    str1 start with Hello
    str1 end with world
    str1 contains Hello
    */

    比较两个字符串可以使用:

    1.运算符:<、>、==、>=、<=
    2.QString::localeAwareCompare(const QString &str1, const QString &str2);
    比较两个字符串,若str1大于str2,返回正整数,若str1小于str2,返回负整数,若str1等于str2,返回0
    3.QString::compare(const QString &str1, const QString &str2, Qt::CaseSensitive/Qt::CaseInsensitive);
    与QString::localeAwareCompare()功能相似,但却可以设置是否大小写敏感(默认敏感)

    QString str1 = "AAA", str2 = "BBB", str3 = "Aaa";
    
    if (str1 <= str2)
        qDebug() << str1 << "<=" << str2;
    else
        qDebug() << str1 << ">" << str2;
    
    int result = QString::compare(str1, str3, Qt::CaseInsensitive);
    
    if (result > 0)
        qDebug() << str1 << ">" << str3;
    else if (result < 0)
        qDebug() << str1 << "<" << str3;
    else
        qDebug() << str1 << "=" << str3;
    /*
     *输出结果:
     *  "AAA" <= "BBB"
     *  "AAA" = "Aaa"
     */

    将QString转化为其他类型(此类函数有很多,下面只列出常用的几个,若有需要,可以查看Qt文档):

    QString::toInt()
    QString::toDouble()
    QString::toFloat()
    QString::toLong()
    QString::toLongLong()

    注意:

    QString字符串的Empty与NULL,即默认构造函数创建QString与通过QString("")构造时

    QString str1, str2("");
    
    if (str1.isEmpty())
        qDebug() << "str1 is Empty";
    else
        qDebug() << "str1 is not Empty";
    
    if (str1.isNull())
        qDebug() << "str1 is NULL";
    else
        qDebug() << "str1 is not NULL";
    
    if (str2.isEmpty())
        qDebug() << "str2 is Empty";
    else
        qDebug() << "str2 is not Empty";
    
    if (str2.isNull())
        qDebug() << "str2 is NULL";
    else
        qDebug() << "str2 is not NULL";
    /*
    输出结果:
    str1 is Empty
    str1 is NULL
    str2 is Empty
    str2 is not NULL
    */

    除了上面介绍的函数外,QString还有很多功能强大的函数,可以在Qt文档或QCreator的Help中查看

  • 相关阅读:
    深入理解java:2.3.1. 并发编程concurrent包 之Atomic原子操作(循环CAS)
    深入理解java:2.3. 并发编程 java.util.concurrent包
    深入理解java:2.2. 同步锁Synchronized及其实现原理
    深入理解java:2.1. volatile的使用及其原理
    深入理解java:2. 多线程机制
    深入理解java:1.3.2 JVM监控与调优
    深入理解java:1.3.1 JVM内存区域的划分(运行时数据区)
    深入理解java:1.3. 垃圾收集
    深入理解java:1.2. 字节码执行引擎
    线程的等待与唤醒,实现if...else里面的值交互依次输出
  • 原文地址:https://www.cnblogs.com/lnlin/p/10139209.html
Copyright © 2011-2022 走看看