QString功能用法大全

本文详细介绍了QString在C++编程中常用的操作,如字符串连接、插入、替换、查询(开始、结束、包含)、转换(整数、字符编码)以及长度计算和分段处理等。
摘要由CSDN通过智能技术生成

1.QString常用操作符

(1)QString提供了一个二元的“+”操作符用于组合两个字符串,并提供了一个“+=”操作符用于将一个字符串追加到另一个字符串的末尾,例如:

QString str1 = "Welcome ";

str1=str1+"to you! ";        //str1=" Welcome to you! "

QString str2="Hello, ";

str2+="World! ";              //str2="Hello,World! "

(2)QString::append()函数具有与“+=”操作符同样的功能,实现在一个字符串的末尾追加另一个字符串,例如:

QString str1 = "Welcome ";

QString str2 = "to ";

str1.append(str2);          //str1=" Welcome to"

str1.append("you! ");       //str1="Welcome to you! "

(3)组合字符串的另一个函数是QString::sprintf(),此函数支持的格式定义符和C++库中的函数sprintf()定义的一样。例如:

QString str;

str.sprintf("%s"," Welcome ");              //str="Welcome "

str.sprintf("%s"," to you! ");               //str="to you! "

str.sprintf("%s %s"," Welcome ", "to you! ");    //str=" Welcome to you! "

(4)Qt还提供了另一种方便的字符串组合方式,使用QString::arg()函数,此函数的重载可以处理很多的数据类型。此外,一些重载具有额外的参数对字段的宽度、数字基数或者浮点数精度进行控制。通常,相对于函数QString::sprintf(),函数QString::arg()是一个比较好的解决方案,因为它类型安全,完全支持Unicode,并且允许改变"%n"参数的顺序。例如:

QString str;

str=QString("%1 was born in %2.").arg("John").arg(1982);  //str="John was born in 1982."

5QString也提供了一些其他组合字符串的方法,包括如下几种。

① insert()函数:在原字符串特定的位置插入另一个字符串;

② prepend()函数:在原字符串的开头插入另一个字符串;

③ replace()函数:用指定的字符串代替原字符串中的某些字符。

(6)很多时候去掉一个字符串两端的空白(空白字符包括回车字符“\n”、换行字符“\r”、制表符“\t”和空格字符“ ”等)非常有用,如获取用户输入的账号时。

① QString::trimmed()函数:移除字符串两端的空白字符;

② QString::simplified()函数:移除字符串两端的空白字符,使用单个空格字符“ ”代替字符串中出现的空白字符。

例如:

QString str="  Welcome \t to \n you!     ";

str=str.trimmed();                            //str=" Welcome \t to \n you! "

2.查询字符串

(1)函数QString::startsWith()判断一个字符串是否以某个字符串开头。此函数具有两个参数,第一个参数指定了一个字符串,第二个参数指定是否大小写敏感(默认情况下,是大小写敏感的),例如:

QString str="Welcome to you! ";

str.startsWith("Welcome",Qt::CaseSensitive);   //返回true;

str.startsWith("you",Qt::CaseSensitive);        //返回false;

(2)函数QString::endsWith()类似于QString::startsWith(),此函数判断一个字符串是否以某个字符串结尾。

(3)函数QString::contains()判断一个指定的字符串是否出现过,例如:

QString str=" Welcome to you! ";

str.contains("Welcome",Qt::CaseSensitive);    //返回true;

(4)比较两个字符串也是经常使用的功能,QString提供了多种比较手段。

① operator<(const QString&):比较一个字符串是否小于另一个字符串,如果是,则返回true。

② operator<=(const QString&):比较一个字符串是否小于等于另一个字符串,如果是,则返回true。

③ operator==(const QString&):比较两个字符串是否相等,如果相等,则返回true。

④ operator>=(const QString&):比较一个字符串是否大于等于另一个字符串,如果是,则返回true。

⑤ localeAwareCompare(const QString&,const QString&):静态函数,比较前后两个字符串,如果小于则返回负整数值;如果等于则返回0;如果大于则返回正整数值。

⑥ compare(const QString&,const QString&,Qt::CaseSensitivity):该函数可以指定是否进行大小写的比较,而大小写的比较是完全基于字符的Unicode编码值的,而且是非常快的,返回值类似于localeAwareCompare()函数。

(7)indexOf () 和 lastIndexOf ()

indexOf() 函数的原型为:

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

其功能是在自身字符串内查找参数字符串 str 出现的位置,参数 from 是幵始查找的位置,Qt::CaseSensitivity cs 参数指定是否区分大小写。
lastIndexOf() 函数则是查找某个字符串最后出现的位置。

QString str1="G:\Qt5Book\QT5.9Study\qw.cpp";

N=str1.indexOf("5.9");  // N=13

N=str1.lastIndexOf("\\"); //N=21

提示,"\" 是转义字符,如果要查找 "\",需要输入 "\\"。

(8)contains()

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

QString str1="G:\Qt5Book\QT5.9Study\qw.cpp";

N=str1.contains (".cpp", Qt::CaseInsensitive) ; // N=true,不区分大小写

N=str1.contains (".CPP", Qt::CaseSensitive) ;  // N=false,区分大小写

3.字符串转换

(1)QString::toInt()函数将字符串转换为整型数值,类似的函数还有toDouble()、toFloat()、toLong()、toLongLong()等。下面举个例子说明其用法:

QString str="125";

bool ok;

int hex=str.toInt(&ok,16);       //ok=true,hex=293

int dec=str.toInt(&ok,10);       //ok=true,dec=125

(2)QString提供的字符编码集的转换函数将会返回一个const char*类型版本的QByteArray,即构造函数QByteArray(const char*)构造的QByteArray对象。QByteArray类具有一个字节数组,它既可以存储原始字节(raw bytes),也可以存储传统的以“\0”结尾的8位的字符串。在Qt中,使用QByteArray比使用const char*更方便,且QByteArray也支持隐式共享。转换函数有以下几种。

① toAscii():返回一个ASCII编码的8位字符串。

② toLatin1():返回一个Latin-1(ISO8859-1)编码的8位字符串。

③ toUtf8():返回一个UTF-8编码的8位字符串(UTF-8是ASCII码的超级,它支持整个Unicode字符集)。

toLocal8Bit()返回一个系统本地(locale)编码的8位字符串。

下面举例说明其用法:

QString str=" Welcome to you! ";

QByteArray ba=str.toAscii();

qDebug()<<ba;

ba.append("Hello,World! ");

qDebug()<<ba.data();

一个NULL字符串就是使用QString的默认构造函数或者使用“(const char*)0”作为参数的构造函数创建的QString字符串对象;而一个空字符串是一个大小为0的字符串。一个NULL字符串一定是一个空字符串,而一个空字符串未必是一个NULL字符串。例如:

QString().isNull();        //结果为true

QString().isEmpty();       //结果为true

QString("").isNull();      //结果为false

QString("").isEmpty();    //结果为true

4.大小写转换

toUpper() 和 toLower()

toUpper() 将字符串内的字母全部转换为大写形式,toLower() 将字母全部转换为小写形式,如:

QString str1="Hello, World", str2;

str2=str1.toUpper(); //str1="HELLO,WORLD"

str2=str1.toLower(); //str1="hello, world"

5. 长度计算

count()、size() 和 length()

count()、size() 和 length() 都返回字符串的字符个数,这 3 个函数是相同的,但是要注意,字符串中如果有汉字,一个汉字算一个字符。

QString str1="NI 好"

N=str1.count()  //N=3

N=str1.size() //N=3

N=str1.length() //N=3

6. section()分段处理

section() 函数的原型为:

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

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

QString str2, str1="学生姓名,男,1984-3-4,汉族,山东";

str2=str1.section (",",0,0); // str2="学生姓名", 第 1 段的编号为 0

str2=str1.section (",",1,1}; // str2="男"

str2=str1.section (",",0,1}; // str2="学生姓名,男"

str2=str1.section (",",4,4); // str2="山东"

7.一个重要方法:AI回答

  • 23
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
QStringList是Qt框架中的一个类,用于存储字符串列表。它继承自QList<QString>,提供了快速的基于索引的访问以及快速的插入和删除操作。以下是QStringList的一些常用功能: 1.创建QStringList对象: ```cpp QStringList list; // 创建一个空的字符串列表 QStringList list1("Hello"); // 创建一个包含单个字符串的字符串列表 QStringList list2("Hello", "World"); // 创建一个包含两个字符串的字符串列表 QStringList list3 = QStringList() << "Hello" << "World"; // 使用 << 运算符创建字符串列表 ``` 2.添加和删除元素: ```cpp list.append("Hello"); // 在列表末尾添加一个元素 list.prepend("World"); // 在列表开头添加一个元素 list.insert(1, "Qt"); // 在指定位置插入一个元素 list.removeFirst(); // 删除列表中的第一个元素 list.removeLast(); // 删除列表中的最后一个元素 list.removeAt(1); // 删除指定位置的元素 ``` 3.获取元素: ```cpp QString str = list.at(0); // 获取指定位置的元素 QString first = list.first(); // 获取列表中的第一个元素 QString last = list.last(); // 获取列表中的最后一个元素 ``` 4.判断元素是否存在: ```cpp bool contains = list.contains("Hello"); // 判断列表中是否包含指定元素 int index = list.indexOf("Hello"); // 获取指定元素在列表中的位置 ``` 5.获取列表大小: ```cpp int size = list.size(); // 获取列表中元素的个数 bool isEmpty = list.isEmpty(); // 判断列表是否为空 ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI+程序员在路上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值