qt5之学习QString

Learning QString!!!

 

先记录几个注意点:

1、编码的区别;在qt中QString类使用的是unicode编码格式,这是一个short 类型,一个字符占两个字节;普通的const char *类型的字符,使用utf-8编码格式,这是使用一个字节编码,以’\0’结束

 

2、QString 使用implicit sharing(隐式共享),也就是说copy-on-write(写时拷贝),这样减少了存储器的使用,对于以两个字节存储的unicode来说节省了硬开销。

 

3、Qt提供了一个8位存储以’\0’结束的类型QByteArray

 

4、在访问一个QString类型的时候,使用at(index),要比operator[]()好,因为后者是deep copy

 

5、两种办法从QString到const char *的转换;使用宏qPrintable(QString);<QString>.toLocal8Bit().constData();打印带参数的类似于printf功能,使用qWarning("%s:%s", qPrintable(key), qPrintable(value));

 

6、从一个QString类型的字符串中提取一部分字符串的方法:left(),right(),mid()

 

7、可以使用fill(QChar ch,int size=-1)来填充一个已经存在的QString

 

8、可以替换QString中的字符用replace(),移除用remove(),寻找字串或者出现的次数用indexOf(),lastIndexOf()

 

9、如果想要像C一样实现格式化字符串比如printf(),可以使用arg()这个方法,比如QString s = “hello %1”; s.arg(QString(“10”));这样打印就是hello 10,qt提供了很多重载,关于这个函数,见参考文档

 

10、  其他可以写数字用setNum(),写有格式比如十六进制的用number()

 

11、 同样也有容器来装QString类型,像C中的字符串数组一样,QStringList,这时候你就可以使用split()分割字符串到这个容器里面

 

12、 可以取得QStringList的字串,通过特定的QRegEx正则式用QStringList::filter()

 

13、 由于历史原因,qt中的isNull()和isEmpty()是不一样的,举个例子:QString().isNull()返回true,QString().isEmpty()返回true;QString(“”).isNull()返回false,而QString(“”).isEmpty()返回true,是Null就一定是Empty,而是Empty就不一定是Null了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值