「QT」基础数据类 之 QString 字符串类

在这里插入图片描述

✨博客主页
何曾参静谧的博客
📌文章专栏
「QT」QT5程序设计
📚全部专栏
「Win」Windows程序设计「IDE」集成开发环境「UG/NX」BlockUI集合
「C/C++」C/C++程序设计「DSA」数据结构与算法「UG/NX」NX二次开发
「QT」QT5程序设计「File」数据文件格式「UG/NX」NX定制开发
「Py」Python程序设计「Math」探秘数学世界「PK」Parasolid函数说明

Qt 5.15中的QString类详解

一、引言

QString是Qt框架中的一个核心类,专门用于处理Unicode字符串。它提供了丰富的成员函数,用于字符串的创建、操作、查询和转换。在Qt应用程序开发中,QString扮演着非常重要的角色,特别是在人机交互中,所有需要用户输入或向用户展示的内容,最终都以字符串的形式存在,如UI界面、文本文件数据、数据库等。

二、使用范围

QString类适用于需要Unicode支持的应用场景。它提供了对Unicode字符串的完整支持,这意味着它可以用于处理任何语言和字符集,包括非拉丁语系字符集,如中文、日文或俄文等。此外,QString还提供了丰富的字符串操作和处理功能,可以用于存储和操作文本数据、显示图形界面文本、序列化和反序列化数据、处理文件和目录路径等方面。

三、类的头文件

QString类的头文件是<QString>。在使用QString类之前,需要在源文件中包含这个头文件。同时,为了使用QString类,还需要在项目的.pro文件中添加QT += core

四、类的继承

QString类没有直接的父类,它是Qt框架中独立的一个类。但是,QString类与Qt中的其他容器类(如QList、QLinkedList等)有着相似的接口和用法,这使得开发者可以更加方便地处理字符串数据。

五、类的构造介绍

QString类提供了多种构造函数,用于创建QString对象。以下是一些常用的构造函数:

  1. QString():构造一个空字符串。
  2. QString(const char *str):从ASCII字符串构造。
  3. QString(const QByteArray &ba):从QByteArray构造。
  4. QString(const QString &other):复制构造函数。
  5. QString(QChar ch):从单个QChar字符构造。
  6. QString(int size, QChar ch):用指定的字符填充指定大小的字符串。
  7. QString(QLatin1String str):从Latin-1编码的字符串构造。

六、公有函数介绍

QString类提供了大量的公有成员函数,用于字符串的操作和处理。以下是一些常用的公有函数:

  1. append(const QString &str):在字符串末尾追加另一个字符串。
  2. prepend(const QString &str):在字符串开头插入另一个字符串。
  3. insert(int position, const QString &str):在指定位置插入字符串。
  4. remove(int position, int n):移除指定位置和长度的字符串。
  5. replace(int position, int n, const QString &after):替换指定位置的字符串。
  6. clear():清除内容,变为空字符串。
  7. isEmpty():检查字符串是否为空。
  8. size() / length():返回字符串中的字符数。
  9. contains(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive):检查是否包含子字符串。
  10. startsWith(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive):检查字符串是否以指定的子字符串开始。
  11. endsWith(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive):检查字符串是否以指定的子字符串结束。
  12. compare(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive):比较字符串。
  13. toStdString():转换为标准库std::string。
  14. toUtf8():转换为UTF-8编码的QByteArray。
  15. toInt(int base = 10):转换为整数。
  16. toDouble():转换为双精度浮点数。
  17. toFloat():转换为单精度浮点数。
  18. mid(int position, int n):返回从指定位置开始的子字符串。
  19. left(int n):返回左侧的子字符串。
  20. right(int n):返回右侧的子字符串。
  21. split(const QString &sep, Qt::SplitBehavior behavior = Qt::KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive):根据分隔符分割字符串。

七、static函数介绍

QString类还提供了一些静态函数,用于执行一些常见的字符串操作。以下是一些常用的静态函数:

  1. QString::number(int n, int base = 10):将整数转换为字符串。
  2. QString::number(double n, char format = 'g', int precision = 6):将浮点数转换为字符串。
  3. QString::fromLatin1(const char *str, int size = -1):从Latin-1编码的字符串构造QString对象。
  4. QString::fromUtf8(const char *str, int size = -1):从UTF-8编码的字符串构造QString对象。

八、运算符重载

QString类重载了一些常用的运算符,使得字符串的操作更加方便。以下是一些常用的运算符重载:

  1. QString &operator+=(const QString &str):追加字符串。
  2. QString operator+(const QString &s1, const QString &s2):连接两个字符串。
  3. bool operator==(const QString &s1, const QString &s2):比较两个字符串是否相等。
  4. bool operator!=(const QString &s1, const QString &s2):比较两个字符串是否不相等。
  5. QString &operator=(const QString &other):赋值运算符。

九、详细代码举例

以下是一个使用QString类的详细代码示例,展示了如何创建、操作和查询字符串:

#include <QString>
#include <QStringList>
#include <QDebug>

int main() {
    // 创建QString对象
    QString str1("Hello, World!");
    QString str2 = QString::fromUtf8("你好,世界!");
    QString str3(5, 'A'); // 用字符'A'填充长度为5的字符串

    // 追加字符串
    str1.append(" 追加内容");

    // 插入字符串
    str1.insert(5, "插入的");

    // 移除字符串
    str1.remove(13, 3); // 从索引13开始移除3个字符

    // 替换字符串
    str1.replace(6, 2, "替换");

    // 检查字符串是否为空
    bool isEmpty = str1.isEmpty();

    // 获取字符串长度
    int length = str1.length();

    // 检查是否包含子字符串
    bool contains = str1.contains("替换");

    // 检查字符串是否以指定子字符串开始或结束
    bool startsWith = str1.startsWith("Hello");
    bool endsWith = str1.endsWith("内容");

    // 比较字符串
    int compareResult = str1.compare(str2);

    // 转换为标准库std::string
    std::string stdStr = str1.toStdString();

    // 转换为UTF-8编码的QByteArray
    QByteArray utf8ByteArray = str1.toUtf8();

    // 转换为整数
    bool ok;
    int intValue = str1.mid(11, 2).toInt(&ok, 10); // 提取子字符串并转换为整数

    // 分割字符串
    QStringList list = str1.split(" ");

    // 输出结果
    qDebug() << "str1:" << str1;
    qDebug() << "isEmpty:" << isEmpty;
    qDebug() << "length:" << length;
    qDebug() << "contains:" << contains;
    qDebug() << "startsWith:" << startsWith;
    qDebug() << "endsWith:" << endsWith;
    qDebug() << "compareResult:" << compareResult;
    qDebug() << "stdStr:" << stdStr.c_str();
    qDebug() << "utf8ByteArray:" << utf8ByteArray;
    qDebug() << "intValue:" << intValue;
    qDebug() << "list:" << list;

    return 0;
}

在这个示例中,我们展示了如何使用QString类的各种成员函数来创建、操作和查询字符串。通过这些示例,你可以更好地理解QString类的用法和功能。


在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

何曾参静谧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值