QString通过 QChar保存成字符串后并用utf8格式显示
时间: 2023-11-28 07:50:44 浏览: 50
在Qt中,QString默认使用Unicode字符集来保存字符串。为了将QString以UTF-8格式显示,可以使用QString的toUtf8函数将其转换为QByteArray,并将该QByteArray传递给输出流。
示例代码如下:
```
QString str = "你好,世界!";
QByteArray utf8Str = str.toUtf8();
qDebug() << utf8Str;
```
在上面的代码中,我们首先创建了一个包含中文字符的QString对象。接下来,我们使用toUtf8函数将其转换为一个QByteArray对象。最后,我们使用qDebug函数将该QByteArray对象输出到控制台。输出结果应该是UTF-8编码的字符串。
相关问题
怎样知道QStringList所储存的字符串总大小
要知道QStringList所储存的字符串总大小,需要遍历QStringList中的每一个字符串,然后调用QString的size()函数来计算每个字符串的大小,最后将所有字符串的大小相加即可得到总大小。以下是一个示例代码:
```
QStringList stringList;
stringList << "Hello" << "World" << "How" << "Are" << "You";
int totalSize = 0;
foreach (QString str, stringList) {
totalSize += str.size() * sizeof(QChar);
}
qDebug() << "Total size: " << totalSize << " bytes";
```
其中,sizeof(QChar)是因为QString使用UTF-16编码,每个QChar占用2个字节。
QT中十六进制字符串转化为二进制字符串
可以使用QString的toByteArray()函数将十六进制字符串转化为二进制数据,再使用QByteArray的toHex()函数将二进制数据转化为十六进制字符串。
示例代码:
```cpp
QString hexStr = "FF00AA";
QByteArray hexData = QByteArray::fromHex(hexStr.toUtf8());
QString binaryStr;
for(int i = 0; i < hexData.size(); i++) {
binaryStr += QString("%1").arg(hexData.at(i), 8, 2, QChar('0'));
}
```
解释:
1. 定义十六进制字符串`hexStr`为"FF00AA"。
2. 将十六进制字符串转化为二进制数据,存储在`hexData`中。
3. 定义空的二进制字符串`binaryStr`。
4. 循环遍历`hexData`中的每个字节,将其转化为8位二进制字符串并拼接到`binaryStr`中。
5. 最终的二进制字符串为"111111110000000010101010"。