【Qt之·类QString】

系列文章目录



前言

  欢迎来到关于QString类的博客!QString类是Qt框架中的一种字符串类型,它拥有丰富的字符串处理功能,包括但不限于字符串拼接、查找、截取、转换等等。使用QString类可以使字符串处理更加高效和方便,并且由于Qt是跨平台的框架,所以QString类也可以跨平台使用。

  在本博客中,我们将会深入探讨QString类的各种用法,并提供一些实用的示例和技巧。如果您是Qt初学者,也可以通过本博客对Qt字符串处理的基础知识进行加深和巩固。

  在阅读本博客之前,我们需要您具备基本的C++语言基础和Qt框架初步认识,这会更有助于理解和运用QString类。如果您还没有这方面的基础,不要担心,Qt官方文档提供了很好的学习资源,我们也会在博客中穿插一些相关知识点。

  希望这份博客能够为您解决在使用QString类过程中遇到的问题,也希望它能成为您学习Qt的一份重要参考资料。


一、QString类型变量与其他类型变量的转换

1.QString转char *

QString qstr("hello,word");

const char * p = qstr.toLocal8Bit().data();  

2.QString转QByteArray

QString str = "123abc这是测试";
 QByteArray byte1 = str.toLatin1(); //按照ASCII编码转换,无法转换中文
 QByteArray byte2 = str.toUtf8();    //按照Utf-8编码转换,可以转换中文
 qDebug() <<  "byte1:" << byte1 << "byte2:" << byte2;

输出结果:byte1: "123abc????" byte2: "123abc\xE5\xB0\x8F\xE9\xA9\xAC\xE5\x93\xA5" 

二、QString类的成员函数

1.trimmed()和simplified()

trimmed()去掉字符串首尾的空格,simplified()不仅去掉首尾的空格,中间连续的空格也用一个空格替换。

QString str1 = " Are       you ok?  ", str2;
str2 = str1.trimmed(); //str2="Are     you OK?"
str2=str1.simplified();//str2="Are you OK?"

2.arg()

(1)字符串按指定位宽补指定字符到指定位

QString str1 = QString("%1").arg(str, 8, QLatin1Char('0'));    //str1 = "000000A6"
//arg里第一个参数是要补全的字符串,第二个参数是要补全到的位数,第三个参数是用什么字符补全,可以不是0的其他字符

(2)整型进制数转为指定进制字符串并补指定字符按指定位宽到指定位

int n = 66;
//如果要把n转换为十六进制并补全到8位
QString str = QString("%1").arg(n, 8, 16, QLatin1Char('0'));   // str = "00000042"
//arg里第一个参数是十进制整型的数,第二个参数是要补全到的位数,第三个参数是要转换的进制,可以是十六进制也可以是十进制
//第四个参数是用什么字符补全,可以不是0的其他字符

3.indexOf()和lastIndexOf()

indexOf()的函数原型

int indexOf(const QString &str, int form = 0, Qt::CaseSensitivity cs = Qt::caseSensitive) const

其功能是在自身字符串内查的参数字符串str出现的位置,参数from是开始查找的位置,QtLLCaseSensitivity cs参数指定是否区分大小写。

lastIndexOf()函数则是查的某个字符中最后出现的位置。

QString str1="my name is xiaoming";
int N=str1.indexOf("name"); //N=3

4.endsWith()和startsWith()

startsWith()判断是否以某个字符串开头,endWith()判断是否以某个字符结束。

QString str1="test.cpp";
N=str1.endsWith("cpp", Qt::CaseInsensitive);//N=true,不区分大小写
N=str1.startsWith("TEST"); //N=true, 缺省不区分大小写

5.mid()

mid()函数返回一个给定起始位置(第一个参数)和长度(第二个参数)的字串。

QString str = "white man";
QString str2 = str.mid(6, 2);  //结果str2为"ma"

6.left()和right()

left表示从字符串取左边多少个字符;right表示从字符串中取右边多少个字符。注意汉字被当作一个字符。

QString str2,str1="你好!";
str2 = str1.left(1);//str1="你"

如果省略第二个参数,mid()返回从指定的起始位置到这个字符串结尾的子串。

QString str = "white man";
QString str2 = str.mid(6);	//结果str2为"man"

7.contains()

判断字符串内是不包含某个字符串,可以指定是否区分大小写。

QString str1 = "hello world";
N=str1.contains("WORLD", Qt::CaseInsensitve);//N=true,不区分大小写
N=str1.contains("WORLD", Qt::CaseSensitive);//N=false,区分大小写

8.section()

section()的函数原型

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

其功能是从字符串中提取以sep作为分隔符,从start端到end端的字符串。

QString str2,str1="aaaa,bbb";
str2 = str1.section(",", 0,0) ; //str2="aaaa" 第一段的编号为0
str2= str1.section(",", 0, 1); //str2="aaaa,bbb"

9.split()

QString str = "aaa,bbb,ccc";

QStringList list= str.split(",");         //根据“,”来分割字符串,list.at(0) = "aaa", list.at(1) = "bbb", list.at(2) = "ccc"

10.remove()

QString str = “aa ss ff jj”;
str.remove(QRegExp(“\\s”));
这种方式会去掉字符串中的所有空格。结果:”aassffjj”

总结

以上就是今天要讲的内容,本文仅仅简单介绍了QString类的使用,而QString提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: QStringList 是 Qt 中的一个,它提供了一个动态的数组,其中的元素都是 QString 型的字符串。 你可以使用这个来储存和处理多个字符串。例如,你可以使用 QStringList::append() 方法来往数组里添加新的字符串,或者使用 QStringList::at() 方法来访问数组中的特定元素。 QStringQt 中的另一个,它表示一个 Unicode 字符串。你可以使用 QString 来储存和处理文本数据。QString 提供了许多方法,可以让你对字符串进行操作,例如搜索、替换、拼接等。 总的来说,QStringList 和 QString 都是 Qt 中非常常用的,你可以使用它们来处理多个字符串或者单个字符串。 ### 回答2: Qt中的QStringList和QString数组都是用来存储字符串的数据结构。区别在于QStringList更适合处理多个字符串的情况,而QString数组适合处理固定长度的字符串数组。 QStringList是Qt中提供的一个,用于存储多个字符串。它可以动态增加和删除字符串,并且提供了一系列方便的方法来处理字符串列表,比如按照索引访问、循环遍历、排序、搜索等。QStringList可以实现动态管理和操作字符串集合,非常适用于需要频繁修改和操作多个字符串的场景,比如文件路径列表、选项列表等。 QString数组是一个固定长度的存储字符串的数组。与普通的C风格字符串数组不同,QString数组提供了更方便和安全的操作接口,可以动态修改数组中的字符串。由于是固定长度的数组,一旦分配空间就无法动态改变长度。QString数组适用于需要存储固定长度的字符串集合,比如固定的标识符列表、预定义的字符串数组等。 总结来说,QStringList适合处理动态的、可变长度的字符串集合,而QString数组适合处理静态的、固定长度的字符串数组。根据具体的应用场景和需求,选择合适的数据结构可以提高代码的效率和可维护性。 ### 回答3: Qt中的QStringList和QString数组都是用来存储字符串的数据型。 QStringList是Qt中的一个,它可以存储多个字符串,并且提供了一些方法来方便地操作这些字符串。通过QStringList,我们可以实现存储、添加、删除、查找等操作。例如,我们可以使用QStringList的append()方法向列表中添加字符串,使用removeAll()方法删除指定的字符串,使用contains()方法检查列表中是否包含某个字符串等。 QString数组则是一个固定大小的数组,每个元素都是一个QString型的字符串。一旦创建了该数组,它的大小就无法再改变。我们可以使用下标来访问数组中的元素。例如,如果我们有一个QString数组arr,可以通过arr[0]访问第一个元素,arr[1]访问第二个元素,依此推。 不同之处在于QStringList是一个可变大小的列表,可以根据需要动态地添加或删除其中的元素,而QString数组是一个固定大小的数组,一旦创建就不能再改变其大小。所以在对字符串进行频繁的增删操作时,使用QStringList更加方便。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值