「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类详解
- 一、引言
- 二、使用范围
- 三、类的头文件
- 四、类的继承
- 五、类的构造介绍
- 六、公有函数介绍
- 七、static函数介绍
- 八、运算符重载
- 九、详细代码举例
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对象。以下是一些常用的构造函数:
QString()
:构造一个空字符串。QString(const char *str)
:从ASCII字符串构造。QString(const QByteArray &ba)
:从QByteArray构造。QString(const QString &other)
:复制构造函数。QString(QChar ch)
:从单个QChar字符构造。QString(int size, QChar ch)
:用指定的字符填充指定大小的字符串。QString(QLatin1String str)
:从Latin-1编码的字符串构造。
六、公有函数介绍
QString类提供了大量的公有成员函数,用于字符串的操作和处理。以下是一些常用的公有函数:
append(const QString &str)
:在字符串末尾追加另一个字符串。prepend(const QString &str)
:在字符串开头插入另一个字符串。insert(int position, const QString &str)
:在指定位置插入字符串。remove(int position, int n)
:移除指定位置和长度的字符串。replace(int position, int n, const QString &after)
:替换指定位置的字符串。clear()
:清除内容,变为空字符串。isEmpty()
:检查字符串是否为空。size()
/length()
:返回字符串中的字符数。contains(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive)
:检查是否包含子字符串。startsWith(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive)
:检查字符串是否以指定的子字符串开始。endsWith(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive)
:检查字符串是否以指定的子字符串结束。compare(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive)
:比较字符串。toStdString()
:转换为标准库std::string。toUtf8()
:转换为UTF-8编码的QByteArray。toInt(int base = 10)
:转换为整数。toDouble()
:转换为双精度浮点数。toFloat()
:转换为单精度浮点数。mid(int position, int n)
:返回从指定位置开始的子字符串。left(int n)
:返回左侧的子字符串。right(int n)
:返回右侧的子字符串。split(const QString &sep, Qt::SplitBehavior behavior = Qt::KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive)
:根据分隔符分割字符串。
七、static函数介绍
QString类还提供了一些静态函数,用于执行一些常见的字符串操作。以下是一些常用的静态函数:
QString::number(int n, int base = 10)
:将整数转换为字符串。QString::number(double n, char format = 'g', int precision = 6)
:将浮点数转换为字符串。QString::fromLatin1(const char *str, int size = -1)
:从Latin-1编码的字符串构造QString对象。QString::fromUtf8(const char *str, int size = -1)
:从UTF-8编码的字符串构造QString对象。
八、运算符重载
QString类重载了一些常用的运算符,使得字符串的操作更加方便。以下是一些常用的运算符重载:
QString &operator+=(const QString &str)
:追加字符串。QString operator+(const QString &s1, const QString &s2)
:连接两个字符串。bool operator==(const QString &s1, const QString &s2)
:比较两个字符串是否相等。bool operator!=(const QString &s1, const QString &s2)
:比较两个字符串是否不相等。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::stringstd::string stdStr = str1.toStdString();// 转换为UTF-8编码的QByteArrayQByteArray 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类的用法和功能。