QString

与C++的string以及MFC中的CString类似的,在QT5中使用的字符串类QString。

QString类的构造:可以默认为空,或者使用C风格字符串等进行构造,或者复制构造。

QString可以使用+=在尾部添加字符串。

QString可以使用“sprintf”来进行格式化输出,比如:

QString str;

str.sprintf("%s", "welcome!");

QString可以使用simplified()函数来去除字符串里面多余的空格,只保留一个空格。

QString可以使用startWith()、endsWith()来判断以什么开始、什么结束。

QString默认是大小写敏感的,也就是QT::CaseSensitive的。

QString的contains()是查找指定字符串是否存在,

QString的toInt()、toFloat()、toAscii()、toUtf8()、来转为对应的数据。

NULL字符串和空字符串QString是不一样的。

默认QString构造后,就是一个NULL字符串。

NULL字符串一定是空字符串,但是空字符串不一定就是NULL字符串。

比如QString str,这是一个空字符串,也是一个NULL字符串。

比如QString str(""),这是一个空字符串,但是不是NULL字符串。

QString的好处是不需要程序员手动管理内存,那么系统是如何对QString进行内存管理的呢?分以下三步走:

PS:QString存储的是Unicode16编码,所以1个字符=2字节

1、在小于20字符空间之前,步进为4字符。

2、在20-4084字符之间,每次分配内存块大小以2的倍数增加。

3、从4084字符开始,每次以2048字符步进增加。

还需要注意的是,QString是支持隐式共享的,也就是非必要情况下执行浅拷贝,必要情况下执行深拷贝。

比如如下这段代码:

QString str1 = “a”;

QString str2 = str1; //执行浅拷贝,str2和str1指向同一块内存,引用数= 2

str2[0] = ‘b’; //执行深拷贝,str2指向一块新的内存区域,新的str2引用数 = 1, 而str1那边的引用数=2-1= 1

str2[0] = ‘c’; //执行浅拷贝,

除了 QString是支持隐式共享的,还有其他的也支持:

1、QT的容器类,比如QList、QMap等。

2、QPen、QVariant、QBrush、QFont等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值