Qt中字符串的使用

来源:互联网 发布:无网络监控安装教程 编辑:程序博客网 时间:2024/05/04 03:54

首先,应当注意到QString保存的字符是UTF-16字符,即QChar。为了减小内存的拷贝操作,QString使用implicit sharing(copy-on-write)方案,即对象拷贝时并不复制数据内存,而只是复制指针并增加引用计数。

Qt使用类QByteArray保存传统的8比特、'\0‘结尾的字符串。

通常情况下,使用QString比较方便的,它包含了对Unicode字符支持,可以表示中文字符。但有时,我们可能需要使用ascii字符串,需要将QString转换为QByteArray。


1、QString转换为C字符串

QString::toUtf8()返回QByteArray对象,其表示的字符串是采用UTF-8,因此与ASCII字符串兼容,且可以表示所有Unicode字符。如果想得到字符指针,可以进一步使用QByteArray::constData();

QString::toLocal8Bit()也返回QByteArray对象,其采用8-bit字节表示字符串,如果字符串中包含了8-bit字节编码不支持的字符,则返回的字节阵列无定义,即这些字符可能被忽略或替换。

相反地,若想从C字符串转换为QString,可使用对应的函数QString::fromUtf8()和QString::fromLocal8Bit()。


2、QString转换为std::string

QString::toStdString()返回std::string,其中QString中的数据被转换为UTF-8字符使用toUtf8()

QString::toStdWString()返回std::wstring。若平台使用UTF-16,则wchar_t是2字节(如Windows);若平台使用UCS4,则wchar_t为4字节(如大多数Unix系统)


相反地,若想得到QString,可使用QString::fromStdString()和QString::fromStdWString()。

0 0
原创粉丝点击