5.QT-QString类

Qt中的字符串类

介绍

  • 采用Unicode编码 
  • 采用隐式共享技术,节省内存和不必要的数据拷贝
  • 隐式共享介于浅拷贝深拷贝之间,当两个string对象赋值时,会实现浅拷贝(共享一块内存),如果某个对象被修改了,则会实现深拷贝(从新开辟内存)
  • 跨平台使用,不需要考虑不同平台的兼容性
  • QString直接支持字符串与数字的相互转换
  • QString直接支持字符串大小比较
  • QString直接支持不同字符编码间的相互转换
  • QString直接支持std::stringstd::wstring的相互转换
  • QString直接支持正则表达式的应用

QString常用函数

static const QChar data[4] = { 0x0055, 0x006e, 0x10e3, 0x03a3 };
QString str(data, 4);    //通过QChar宽字符初始化

str = "hello";     //直接赋值

str.length();    //获取字符串长度

str.size();     //获取字符串数量,等价于length()

str.capacity();   //获取容量,容量包含了当前string里不必增加内存就能使用的字符数

str.isEmpty();      //如果str为空或为0 ,则返回true,否则返回false

str.isNull();    //如果为0,则返回true,否则返回false

str.clear();    //清空str

str. resize(8);    //设置str的字符串长度

str.fill('m');     //将str字符串,全部字符填为'm'

str.fill('m',5);    //填充5个字符'm',并修改str的字符串长度为5

       
str.append("ABC");   //在str字符串末尾附加"ABC"子串

str.prepend("abc");    //在str字符串头部添加"abc"子串
 
str. chop(2);    //从str字符串末尾, 去掉2个字符

str = "Montreal";

str.remove(1, 4);    //从str下标1位置开始,清除4个字符, s = "Meal"

str.setNum(1234.5);    //数字转字符串 str = "1234.5"

double val = str.toDouble();   //字符串转double  val =1234.5
 

/*arg()成员函数:通过string串里通过“%数字”表示argument(参数) */
str = QString("%1,%2,%3,%4,%5,%6")
    .arg("A","B","C")
    .arg("D","E","D");     //字符串参数替换 str1 = "A,B,C,D,E,D"

str = QString("%1,%2")
         .arg(40)   
         .arg(40,0,16);        //将40以16进制转换为字符串
                               //数值参数替换 str1 = "40,28"

str.sprintf("%d %s",1,"first");    //通过一定参数输出到字符串里, str= "1 first"

str="abcdef";

str.indexOf ("bc");      //return 1

str.indexOf ("bc",1);     //从str下标1的位置查找,return 1

str.indexOf ("bc",2);       //没找到,则return -1
 
str. lastIndexOf("bc",5);    //反向查找,从str下标5的位置向前查找,return 1

str.insert( 2, "AB ");     //在str字符串下标2的位置插入"AB "子串
 
str="abcdefgh";

str2 = str.mid(3);    //提取子串,提取出str的下标为3到末尾,给str2
                      
str2 = str.mid(3,4); //从str的下标为3开始,提取4个字符给str2

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

深入分析golang多值返回以及闭包的实现

一、前言 golang有很多新颖的特性,不知道大家的使用的时候,有没想过,这些特性是如何实现的?当然你可能会说,不了解这些特性好像也不影响自己使用golang,...

5186
来自专栏racaljk

Leetcode 283. Move Zeroes 移动数组中的零 (数组,模拟)

已知数组nums,写一个函数将nums中的0移动到数组后面,同时保持非零元素的相对位置不变。比如已知nums=[0,1,0,3,12],调用你写的函数后nums...

712
来自专栏老九学堂

干货 | Java 中不得不知的异常和处理详解

简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用...

4037
来自专栏Java3y

泛型就这么简单

1674
来自专栏技术之路

模板类的友元

非模板友元 声明一个常规友元 template <class T> class HasFriend { public:   friend void counts...

1757
来自专栏青青天空树

C语言中把数字转换为字符串 【转】

在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者...

4.3K5
来自专栏Python

while补充,字符串和数字的内置方法

一、while循环的补充 while True: name=input('please input your name: ') password...

2667
来自专栏测试开发架构之路

总结了一些指针易出错的常见问题(四)

指针与结构体 简介:我们可以使用C的结构体来表示数据结构元素,比如链表或树的节点,指针是把这些元素联系到一起的纽带。 typedef struct _pers...

2977
来自专栏黑泽君的专栏

throws 与 throw

/* * 有些时候,我们是可以对异常进行处理的,但是又有些时候,我们根本就没有权限去处理某个异常。 * 或者说,我处理不了,我就不处理了。 * 为了解决出...

2272
来自专栏debugeeker的专栏

《coredump问题原理探究》Linux x86版3.6节栈布局之gcc内嵌关键字

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xuzhina/article/detai...

671

扫码关注云+社区

领取腾讯云代金券