随笔 - 49  文章 - 0  评论 - 6  阅读 - 10万

QString, QByteArray, QDataStream, QStringLiteral 用法验证

复制代码
    // 要么使用"QStringLiteral",要么使用"#pragma execution_character_set("utf-8")",但不能同时使用。
    // 长度是6,宽字符。
    QString s(QStringLiteral("ABCD中文"));

    // b1长度:10,能恢复
    QByteArray b1 = s.toUtf8();
    QString s1 = b1;

    // b2长度:6,不能恢复
    QByteArray b2 = s.toLatin1();
    QString s2 = b2;

    // b3与b1相同,能恢复
    QByteArray b3 = s.toStdString().c_str();    
    QString s3 = b3;

    // b4长度:16,前4个字节是内容长度,即12,后面12字节是内容
    QByteArray b4;
    QDataStream out4(&b4, QIODevice::WriteOnly);
    out4 << s;
    QString s4_0 = b4;        // 格式不对,赋值后s4_0为空
    QString s4_1;
    QDataStream in4(&b4, QIODevice::ReadOnly);
    in4 >> s4_1;            // 能恢复

    // b5长度:14,前4个字节是内容长度,即10,后面10字节是内容
    QByteArray b5;
    QDataStream out5(&b5, QIODevice::WriteOnly);
    out5 << s.toUtf8();
    QString s5_0 = b5;        // 格式不对,赋值后s4_0为空
    QString s5_1;
    QDataStream in5(&b5, QIODevice::ReadOnly);
    in5 >> s5_1;            // 不能恢复,是乱码
复制代码

 

posted on   朱迎春  阅读(380)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示