在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()不会触发深拷贝,无需担心性能。
1万+

被折叠的 条评论
为什么被折叠?



