判断 QByteArray的字节数

在Qt中,判断QByteArray的字节数非常简单,直接使用其内置的成员函数即可。以下是几种方法:

1. 使用 size() 函数

QByteArray byteArray;
int bytes = byteArray.size(); // 返回字节数组的实际字节数

2. 使用 length() 函数

int bytes = byteArray.length(); // 与 size() 完全等价

3. 使用 count() 函数

int bytes = byteArray.count(); // 同样返回字节数(与 size()/length() 相同)

关键点说明

  • 等同性size()length()count() 返回相同值(字节数),功能完全一致,可互换使用。
  • 时间复杂度:这些函数的时间复杂度是 O(1),调用它们不会导致性能问题。
  • 空数组判断:如果数组为空,则返回 0
    QByteArray().size(); // 返回 0

示例代码

#include <QCoreApplication>
#include <QByteArray>
#include <QDebug>

int main() {
    QByteArray data;
    
    // 空数组
    qDebug() << "Size of empty QByteArray:" << data.size();  // 输出 0

    // 填充数据
    data.append("Hello");  // 包含5个字符(每个ASCII字符占1字节)
    qDebug() << "Bytes in 'Hello':" << data.size();  // 输出 5
    
    // 添加UTF-8多字节字符(如中文)
    data.append("中文");  // "中"和"文"各占3字节(UTF-8编码)
    qDebug() << "Bytes after adding Chinese:" << data.size();  // 输出 5 + 6 = 11

    return 0;
}

输出

Size of empty QByteArray: 0
Bytes in 'Hello': 5
Bytes after adding Chinese: 11

注意事项

  • 字符数 vs 字节数size() 返回的是字节数,不是字符数。对于UTF-8编码的文本,一个字符可能由多个字节表示(如中文通常占3字节)。
  • 数据截取:使用 QByteArray::left()mid()right() 截取时,返回的字节数由参数决定。
  • 隐式共享QByteArray 使用隐式共享(写时复制),调用 size() 不会触发深拷贝,无需担心性能。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值