QByteArray类
提供一个字节数组,QByteArray可用于存储原始字节(包括“\ 0” )和传统的8位 “\ 0” 端接字符串 . 使用QByteArray比使用const char *更方便.
除了QByteArray之外,Qt还提供了QString类来存储字符串数据。对于大多数用途,QString是您要使用的类。它存储16位Unicode字符,使您可以轻松地在应用程序中存储非ASCII /非拉丁字符。此外,QSt API在Qt API中始终使用。
QByteArray适合的两个主要情况是当您需要存储原始二进制数据,并且当内存保护至关重要时(例如,使用嵌入式Linux的Qt)
初始化QByteArray的一种方法是const char *将其传递给其构造函数。例如,以下代码创建一个大小为5的字节数组,
其中包含数据“Hello”:
QByteArray ba("Hello");
- 1
虽然size()为5,但是字节数组在最后还会保留一个额外的’\ 0’字符,
以便如果使用一个函数来请求指向底层数据的指针(例如调用data()),那么指出的数据保证被’\ 0’终止。
另一种方法是使用resize()设置数组的大小,并初始化每个字节的数据字节.
QByteArray使用基于0的索引,就像C ++数组一样。
要访问特定索引位置的字节,可以使用operator[] ()在非 常量字节数组上,operator 返回一个可以在赋值左侧使用的字节的引用。例如:
QByteArray ba;
ba.resize(5);
ba[0] = 0x3c;
ba[1] = 0xb8;
ba[2] = 0x64;
ba[3] = 0x18;
ba[4] = 0xca;
//对于只读访问,替代语法是使用at():
for (int i = 0; i < ba.size(); ++i)
{
if (ba.at(i) >= 'a' && ba.at(i) <= 'f')
cout << "Found character in range [a-f]" << endl;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
at()可以比