Qt中字符串的使用

首先,应当注意到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()。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值