Qt QString的使用实现

 更新时间:2022年05月19日 09:06:50   作者:雲烟  
本文主要介绍了Qt QString的使用实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

QString则使用隐式共享,又称回写复制。当两个对象共享同一份数据时,数据内容不改变,则不进行数据的复制,即将深拷贝和浅拷贝结合起来使用。

QString使用时在连续的内存块上保存字符串,QString内存分配策略如下:

  • 范围0~20:每次4个字符。
  • 范围20~4084:每次2倍。
  • 范围4084~∞:每次2048个字符。

+:连接字符串

QString str1 = "I ";
QString str2 = "LOVE ";
QString str3 = "YOU";
QString str4 = str1 + str2 + str3; //I LOVE YOU

append():追加字符串

QString str1 = "Hello ";
QString str2 = "World";
str1.append(str2);//Hello World
str1.append("!");//Hello World !

sprintf():赋值/连接/追加字符串

QString str;
str.sprintf("%s","Nice to ");//str = Nice to
str.sprintf("%s %s","Nice to ", "meet you");//str = Nice to meet you

arg():同上

QString str;
str = QString("My name is %1, I'm %2 old.").arg("Paul").arg("17").
//str = My name is Paul, I'm 17 old.

insert():特定位置插入字符串

QString str = "This is test code.";
str.insert(8,"not ");
//str = This is not test code.

prepend():开头插入字符串

QString str = "This is test code.";
str.prepend("Oh! ");
//str = Oh! This is test code.

replace():替换原字符串某些字符

QString str = "This is test code.";
str.replace(13,5,"data.");
//str = This is test data.

trimmed():移除字符串两端的空白字符

QString str = "   This is test code.   ";
QString str1 = str.trimmed();
//str = This is test code.

simplified():移除两端空白字符,使用单个空格字符“ ”替代

QString str = "   This is test code.   ";
QString str1 = str.simplified();
//str = " This is test code. "

startsWith():检查字符串是否以某个字符串开头,Qt::CaseSensitive指定

QString str = "This is test code.";
bool result = str.startsWith("This",Qt::CaseSensitive);
//result = true
QString str = "This is test code.";
bool result = str.startsWith("is",Qt::CaseSensitive);
//result = false

endsWith():功能同上,检查结尾。

QString str = "This is test code.";
bool result = str.endsWith("code.",Qt::CaseSensitive);
//result = true
QString str = "This is test code.";
bool result = str.endsWith("is",Qt::CaseSensitive);
//result = false

contains():判断一个字符串是否出现过。

QString str = "This is test code.";
bool result = str.contains("code.",Qt::CaseSensitive);
//result = true
QString str = "This is test code.";
bool result = str.contains("what",Qt::CaseSensitive);
//result = false

localeAwareCompare(const QString&, const QString&):比较两个字符串,前小于后返回负值,相等返回0,大于返回正值。此比较时基于平台相关的本地字符集。

qDebug()<<"Result:"<<QString::localeAwareCompare("good","bad");
//Result: 1

compare((const QString&, const QString&,Qt::CaseSensitivity):指定是否进行大小写比较,用法同上。

<:比较是否小于,是则返回true。

<=:比较是否小于等于,是则返回true。

==:比较是否相等,是则返回true。

>=:比较是否大于等于,是则返回true。

>:比较是否大于,是则返回true。

......

toInt():转整型。

toDouble():转双精度浮点型。

toFloat():转浮点型。

toLong():转长整型。

toLongLong():转64位长整型。

......

QByteArray():QString会返回一个const char *的QByteArray,既可以存储原始字节,也可以存储以“\0”结尾的8位字符串。

QString str = "I'm good man";
QByteArray ba = str.toAscii();
ba.append("yes,very good");

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

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

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

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

isEmpty():检查是否空字符串。

isNull():检查是否为空。

QString().isNull; //true
Qstring().isEmpty(); //true
QString("").isNull; //false
QString("").isEmpty(); //true

到此这篇关于Qt QString的使用实现的文章就介绍到这了,更多相关Qt QString内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C语言用循环单链表实现约瑟夫环

    C语言用循环单链表实现约瑟夫环

    这篇文章主要为大家详细介绍了C语言用循环单链表实现约瑟夫环,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • C++快速排序算法简明理解

    C++快速排序算法简明理解

    快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影
    2022-05-05
  • C++实现LeetCode(114.将二叉树展开成链表)

    C++实现LeetCode(114.将二叉树展开成链表)

    这篇文章主要介绍了C++实现LeetCode(114.将二叉树展开成链表),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • 用pybind11封装C++实现的函数库的方法示例

    用pybind11封装C++实现的函数库的方法示例

    这篇文章主要介绍了用pybind11封装C++实现的函数库,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • C++ typeid 和虚函数详解

    C++ typeid 和虚函数详解

    这篇文章主要介绍了c++ typeid 和虚函数的使用,帮助大家更好的理解和使用c++,感兴趣的朋友可以了解下,希望能够给你带来帮助
    2021-09-09
  • 基于QT5实现一个时钟桌面

    基于QT5实现一个时钟桌面

    这篇文章主要介绍了利用QT5实现的一个时钟桌面,文中的示例代码讲解详细,对我们学习或工作有一定的帮助,感兴趣的小伙伴可以了解一下
    2022-01-01
  • 简单总结C语言中的运算符优先级

    简单总结C语言中的运算符优先级

    这篇文章主要介绍了C语言中的运算符优先级,文中简单总结了一些常用运算符的优先级顺序以及记忆技巧,需要的朋友可以参考下
    2016-05-05
  • Matlab利用prim算法实现迷宫的生成

    Matlab利用prim算法实现迷宫的生成

    普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树。本文将利用prim算法迷宫生成及其艺术渲染,感兴趣的可以了解一下
    2022-10-10
  • C语言实现三子棋

    C语言实现三子棋

    这篇文章主要为大家详细介绍了C语言实现三子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-01-01
  • C++多线程实现绑定CPU的方法详解

    C++多线程实现绑定CPU的方法详解

    这篇文章主要为大家详细介绍了C++如何利用多线程实现绑定CPU,文中的示例代码简洁易懂,具有一定的学习价值,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-05-05

最新评论