系列文章目录
文章目录
前言
欢迎来到关于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提供了大量能使我们快速便捷地处理数据的函数和方法。