• Qt基础开发之QString与QByteArray详细用法与区别及QString QByteArray互转


    QString

    Qt的QString类提供了很方便的对字符串操作的接口,QString没有继承任何Qt基类。

    QString::arg()用法

    1

    QString str = QString("%1 %2 %3").arg(1).arg(2.0).arg("hello");

    ​ %1, %2, %3作为占位符,将被后面的arg()函数中的内容依次替换,比如%1将被替换成1,%2将被替换成2.0,%3将被替换成"hello"。输出为:"1 2 hello"

    QString::sprintf用法

    QString

    1

    2

    QString

    str.sprintf("%d %s", 10, "hello");

    QByteArray

    Qt的QByteArray类提供了很方便的对字节流操作的接口,QByteArray没有继承任何Qt基类。

    QByteArray::toHex将字节流转换成ACSII编码

    例如:0x31一个字节会转换成"31"两个字节

    1

    2

    3

    QByteArray byte("123456");

    QByteArray byteHex = byte.toHex();

    qDebug() << "byte:" << byte << "byteHex:" << byteHex << endl;

    输出:byte: "123456" byteHex: "313233343536"

    QByteArray::fromHex将ACSII编码转字节流

    例如:"31"会转换成0x31一个字节, 需要注意它是一个静态函数

    1

    2

    3

    QByteArray byte("31323334");

    QByteArray byteFromHex = QByteArray::fromHex(byte);

    qDebug() << "byte:" << byte << "byteFromHex:" << byteFromHex << endl;

    输出: byte: "31323334" byteFromHex: "1234"

    ​QByteArray转char*

    1

    2

    3

    QByteArray byte("123456");

    char* str = byte.data();

    qDebug() << "str:" << str << endl;

    输出:str: 123456

    QString与QByteArray的区别

    ​QString是专门用来处理字符串的,除了能处理ASCII编码字符,还包括各国语言的编码,默认情况下QString会把所有数据当做utf-8编码来处理。QByteArray只是单纯用来处理数据的,除了能处理ASCII编码字符,其它复杂的编码不能处理,直接以字节流的方式来对待。

    看下面一个例子:

    1

    2

    3

    QString str("小马哥");

    QByteArray byte("小马哥");

    qDebug() << "str:" << str << "byte:" << byte << endl;

    ​输出结果:str: "小马哥" byte: "\xE5\xB0\x8F\xE9\xA9\xAC\xE5\x93\xA5",str保留编码格式,能输出中文,但是QByteArray只把"小马哥"当做普通的字节数据来处理,utf-8编码下,一个汉字占三个字节。

    QString QByteArray互转

    QString转QByteArray

    1

    2

    3

    4

    QString str("123abc小马哥");

     QByteArray byte1 = str.toLatin1(); //按照ASCII编码转换,无法转换中文

     QByteArray byte2 = str.toUtf8();  //按照Utf-8编码转换,可以转换中文

     qDebug() <<  "byte1:" << byte1 << "byte2:" << byte2;

    输出结果:byte1: "123abc???" byte2: "123abc\xE5\xB0\x8F\xE9\xA9\xAC\xE5\x93\xA5"

    QByteArray转QString

    1

    2

    3

    QByteArray byte("123abc小马哥");

    QString str(byte);

    qDebug() << "byte:" << byte << "str:" << str;

    输出结果:byte: "123abc\xE5\xB0\x8F\xE9\xA9\xAC\xE5\x93\xA5" str: "123abc小马哥"

    QString 转char*

    ​QString类型无法直接转换成char*, 需要先转换成QByteArray, 然后再转char*

    1

    2

    3

    QString str("123abc小马哥");

    QByteArray byte = str.toUtf8();

    char* str1 = byte.data();

    本文主要讲解了Qt开发中QString与QByteArray详细用法与区别及QString QByteArray互转,QByteArray转char*、QString转char*、更多源于Qt开发知识请查看下面的相关链接

  • 相关阅读:
    政企组织为什么更需要私有化的IM即时通讯平台?
    修复微信小程序不能获取头像和昵称的bug,微信小程序新版头像昵称API使用
    Dapr v1.12 正式发布:发件箱模式是亮点
    Vue2(十三):路由的使用及注意点、嵌套路由、路由的query和params参数、props配置
    vue2常见面试题
    iOS 16发热耗电严重怎么办?iOS 16发热耗电解决办法分享
    ASO优化:关键词该怎么选
    VMware Workstation 17 新特性介绍
    文本生成系列之retrieval augmentation(进阶篇Atlas)
    rocketMQ的使用
  • 原文地址:https://blog.csdn.net/delphigbg/article/details/128074322