QString和QByteArray的用法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QString和QByteArray的用法相关的知识,希望对你有一定的参考价值。
参考技术A QChar :表示一个Unicode编码的字符;QByteArray :相当于是QChar的一个vector<>;
QStringRef :是对QString一部分的一个引用,作了一些优化;
QStringList :是QList的派生类,是字符串的列表类,非常有用;
QRegExp :对于正则表达式提供了丰富的操作,详细用法;
QTextCodec :提供QString与不同编码的字符串之间的转换
隐式共享又称回写复制。
1、当两个对象共享同一份数据(通过浅拷贝实现数据块的共享)时,如果数据不改变,则不进行数据的复制(浅拷贝,引用)。
2、而当某个对象需要改变数据时,则进行深拷贝(堆中开辟空间)。
Qt中支持隐式共享的类,还包括:
1、所有的容器类。
2、QString、QByteArray、QBrush、QPen、QPalette、QBitmap、QImage、QPixmap、QCursor、QDir、QFont和QVariant等。
详细参见 QString类的详细用法
QString类存储Unicode 字符串(UTF-16编码),QString字符串中能嵌入'\0'字符,length()函数返回整个字符串的大小,包括嵌入的'\0'字符。
QString转Qchar时,需先转换成QByteArray。
常用字符串函数如下:
返回【从pos起长度为len】的字符串。
返回【从pos起到字符串结尾】的字符串。
返回【最前面 长度为len】的字符串。
返回【最后面 长度为len】的字符串。
第一个参数为【待检字符串 / 字符】;第二个参数为【起始位置】,默认从0字节开始检索。
检索成功返回字节起始位置值,检索失败返回 -1。
检查字符串是否以【字符串 / 字符】开始,成功则返回true,失败则返回false。
检查字符串是否以【字符串 / 字符】结尾,成功则返回true,失败则返回false。
QByteArray类存储char型字符。
Qt char * 转QString
1.QString转char *
先将QString转换为QByteArray,再将QByteArray转换为char *。
注意:不能用char *mm = str.toLatin1().data();。
因为str.toLatin1()得到的QByteArray类型结果不能保存,最后转换mm的值就为空。
2. char * 转QString
使用QString的构造函数进行转换:QString(const QLatin1String &str);
QLatin1String的构造函数:QLatin1String(const char *str);
但是此方法或出现中文乱码。
采用以下两种方法则不会。
Qt5:char *ch = "中文的char*如何转换成QString?";
QString str(ch);
Qt4 :char *ch = "我是中文";
QString str = QString::fromUtf8(ch));
以上是关于QString和QByteArray的用法的主要内容,如果未能解决你的问题,请参考以下文章
《Qt数据类型》--QByteArray,QString,int,hex之间的转化