Qt 之QString

本文介绍了 Qt 中 QString 类的多种实用方法,包括字符填充、查找子字符串、插入字符串、判断空值、字符串截取、删除字符、替换字符、切割字符串及类型转换等功能。

Qt的QString类提供了很方便的对字符串操作的接口。

  1. 使某个字符填满字符串,也就是说字符串里的所有字符都有等长度的ch来代替。
QString::fill ( QChar ch, int size = -1 )

例:

     QString str = "Berlin";
     str.fill('z');
     // str == "zzzzzz"

     str.fill('A', 2);
     // str == "AA"

2,从字符串里查找相同的某个字符串str。

int QString::indexOf ( const QString & str, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const

例如:

QString x = "sticky question";
     QString y = "sti";
     x.indexOf(y);               // returns 0
     x.indexOf(y, 1);            // returns 10
     x.indexOf(y, 10);           // returns 10
     x.indexOf(y, 11);           // returns -1

3指定位置插入字符串

QString & QString::insert ( int position, const QString & str )

例如:

     QString str = "Meal";
     str.insert(1, QString("ontr"));
     // str == "Montreal"

3,判断字符串是否为空。

bool QString::isEmpty () const

如:

     QString().isEmpty();            // returns true
     QString("").isEmpty();          // returns true
     QString("x").isEmpty();         // returns false
     QString("abc").isEmpty();       // returns false

4.判断字符串是否存在。

bool QString::isNull () const

例如:

     QString().isNull();             // returns true
     QString("").isNull();           // returns false
     QString("abc").isNull();        // returns false

5,从左向右截取字符串

QString QString::left ( int n ) const

例如:

     QString x = "Pineapple";
     QString y = x.left(4);      // y == "Pine"

6,从中间截取字符串。

QString QString::mid ( int position, int n = -1 ) const

例如:

  QString x = "Nine pineapples";
     QString y = x.mid(5, 4);            // y == "pine"
     QString z = x.mid(5);               // z == "pineapples"

7,删除字符串中间某个字符。

QString & QString::remove ( int position, int n )

例如:

     QString s = "Montreal";
     s.remove(1, 4);
     // s == "Meal"

8,替换字符串中的某些字符。

QString & QString::replace ( int position, int n, const QString & after )

例如:

     QString x = "Say yes!";
     QString y = "no";
     x.replace(4, 3, y);
     // x == "Say no!"

9,以某个字符切割字符串。(最近经常用到的)

QString QString::section ( QChar sep, int start, int end = -1, SectionFlags flags = SectionDefault ) const

例如:

复制代码
   QString str;
     QString csv = "forename,middlename,surname,phone";
     QString path = "/usr/local/bin/myapp"; // First field is empty
     QString::SectionFlag flag = QString::SectionSkipEmpty;

     str = csv.section(',', 2, 2);   // str == "surname"
     str = path.section('/', 3, 4);  // str == "bin/myapp"
     str = path.section('/', 3, 3, flag); // str == "myapp"
复制代码

10,把整型,浮点型,或其他类型转化为QString

QString & QString::setNum ( uint n, int base = 10 )
Qt 框架中,`QString` 是用于处理和操作 Unicode 文本字符串的核心类。它提供了丰富的功能来创建、修改、查询以及格式化字符串,适用于开发跨平台的 C++ 应用程序中的文本处理需求[^1]。 ### 创建 QString 对象 可以使用多种方式创建 `QString` 实例: - 默认构造函数:创建一个空字符串。 ```cpp QString str; ``` - 使用字符串字面量初始化: ```cpp QString str = "Hello, Qt!"; ``` - 使用静态方法如 `fromUtf8()` 从 UTF-8 编码的数据构建: ```cpp QByteArray data("UTF-8 encoded text"); QString str = QString::fromUtf8(data); ``` - 将数字转换为字符串: ```cpp QString numberStr = QString::number(12345); ``` ### 修改字符串内容 `QString` 提供了多种方法来修改字符串内容,包括追加、插入和替换等操作: - 追加字符串: ```cpp QString str = "Hello"; str.append(", World!"); // str == "Hello, World!" ``` - 插入子字符串: ```cpp QString str = "World"; str.insert(0, "Hello "); // str == "Hello World" ``` - 替换部分内容: ```cpp QString str = "Qt is great!"; str.replace(9, 5, "awesome"); // str == "Qt is awesome" ``` ### 查询与查找操作 `QString` 类还支持多种查询操作,例如检查是否包含特定子串、查找子串的位置等: - 检查是否包含某个子串: ```cpp bool hasSubstr = str.contains("great"); ``` - 查找子串首次出现的位置: ```cpp int index = str.indexOf("World"); ``` - 分割字符串为多个部分: ```cpp QStringList parts = str.split(' '); ``` ### 转换操作 `QString` 可以方便地转换为其他数据类型或不同编码格式的字符串: - 转换为整数: ```cpp bool ok; int value = str.toInt(&ok); ``` - 转换为 UTF-8 编码的 `QByteArray`: ```cpp QByteArray utf8Data = str.toUtf8(); ``` - 转换为标准库中的 `std::string`: ```cpp std::string stdStr = str.toStdString(); ``` ### 格式化字符串 `QString` 支持类似于 C 语言中 `sprintf` 的格式化输出功能,并且也提供了一些更高级的方法: - 使用 `arg()` 方法进行参数替换: ```cpp QString formatted = QString("Value: %1").arg(42); // "Value: 42" ``` - 使用 `sprintf()` 方法: ```cpp QString formatted; formatted.sprintf("Hex: %x", 255); // "Hex: ff" ``` ### 示例代码 以下是一个综合示例,展示如何使用 `QString` 进行基本的操作: ```cpp #include <QString> #include <QDebug> int main() { QString str = "Hello"; str.append(", Qt!"); qDebug() << "Original string:" << str; if (str.contains("Qt")) { int pos = str.indexOf("Qt"); str.replace(pos, 2, "Qt Framework"); } qDebug() << "Modified string:" << str; QString numberStr = QString::number(12345); bool ok; int num = numberStr.toInt(&ok); qDebug() << "Converted number:" << num; return 0; } ``` 上述代码演示了字符串的创建、修改、查询及类型转换等常见操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值