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 QString 与 QByteArray 的转换

《Qt数据类型》--QByteArray,QString,int,hex之间的转化

QByteArray to QString

转载:QByteArray和QVariant

QByteArray和十六进制的QString(char*)相互转换

如何将qt中的qbytearray类型数据转换成去qstring类型