Qt QString详细用法

一.基础用法

1.创建QString对象

QString str1 = "Hello, World!";
QString str2("This is a QString object.");
//一个是等号的重载,一个是拷贝构造,本质上是等价的

 2.获取字符串长度 

int length = str1.length(); // 返回字符串的长度

3.拼接字符串 

QString combinedStr = str1 + " " + str2; // 使用+操作符拼接字符串

 4.字符串比较

if (str1 == str2) {
    // 字符串相等
} else {
    // 字符串不相等
}

5.字符串查找 

int index = str1.indexOf("World"); // 查找子字符串的位置

6.字符串替换

QString replacedStr = str1.replace("Hello", "Hi"); // 替换子字符串

7.字符串转换

int num = 123;
QString numStr = QString::number(num); // 将整数转换为字符串

8.字符串拆分

QStringList list = str2.split(" "); // 将字符串按空格拆分成字符串列表
foreach (const QString &str, list) {
    qDebug() << str;
}

9.字符串转换为数字

QString numStr = "456";
int num = numStr.toInt(); // 将字符串转换为整数

10.字符串转换为字符数组 

QByteArray byteArray = str1.toUtf8(); // 将字符串转换为UTF-8编码的字节数组

11.字符串格式化

QString formattedStr = QString("The value is %1").arg(123); // 格式化字符串

二.使用QString需要注意的点

  1. 字符串的不可变性:QString是不可变的,即一旦创建了一个QString对象,就不能直接修改其内容。任何对QString对象的修改都会返回一个新的QString对象。

  2. 字符串的编码:QString默认使用UTF-16编码存储字符串,但可以通过toUtf8()、toLatin1()等方法将字符串转换为其他编码。

  3. 字符串的拷贝:当对QString对象进行操作时,会涉及到字符串的拷贝。因为QString是不可变的,任何修改操作都会创建一个新的QString对象,而不是在原对象上直接修改。

  4. 字符串的性能:在处理大量字符串时,需要注意QString的性能。频繁的字符串拼接、替换等操作可能会导致性能问题,可以考虑使用QByteArray或QTextStream等类来处理大量字符串。

  5. 字符串的比较:在比较字符串时,需要注意区分大小写或忽略大小写。可以使用QString的compare()方法来进行比较,并指定比较规则。

  6. 字符串的空值检查:在使用QString时,需要注意对空值进行检查,以避免空指针异常。可以使用isEmpty()方法来判断字符串是否为空。

  7. 字符串的转换:在将QString转换为其他类型时,需要注意转换的准确性。比如将QString转换为整数时,需要确保字符串中只包含数字字符。

  8. 字符串的拆分:在拆分字符串时,需要考虑分隔符的处理。可以使用split()方法来按照指定的分隔符拆分字符串,并注意处理可能存在的空字符串。

三.案例练习 

需求:在文本框中输入一段古诗词,可以自动提取每段的第一个字符,并输入到另一个文本框中。

如图所示:

 

代码如下: 

//先检测是否有文本
    if(ui->text_name->toPlainText().isEmpty())
    {
        QMessageBox::information(this,"提示","文本为空,请输入!");

    }else
    {
        //需求:将text里面的文本进行分割,并其每个字串的第一个字符组成一段话
        QString ret;
        QString ans=ui->text_name->toPlainText();

        //进行分割
        QStringList list=ans.split("\n");
        int count=list.count();
        for(int i=0;i<count;i++)
        {
            ret+=list[i].at(0);
        }

        //将ret输入回到lineEdit中
        ui->lineEdit->setText(ret);


    }

  • 14
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值