判断是否为空
可以使用函数isEmpty()来判断字节数组是否为空,即size是否为0。函数isEmpty()的原型声明如下:
bool isEmpty();
如果字节数组的size为0,则返回true,否则返回false下列代码演示isEmpty0函数的使用:
QByteArray().isEmpty(); //returns true
QByteArray("").isEmpty(); //returns true
QByteArray("abc").isEmpty(); returns false
向前搜索和向后搜索
函数indexOf()返回该字节数组中第一次出现字节数组ba的索引位置,从索引位置向前搜索。该函数的原型声明如下:
int indexOf(const QByteArray &ba, int from = 0);
其中,参数ba为要查找的目标字节数组ba,找到ba就返回索引值:from表示开始搜索位置对应的索引值,默认从索引值为0的位置开始搜索。如果找到ba,则返回第一次出现ba所在位置对应的索引值,如果没有找到,则返回-1.注意,所谓向前搜索,就是朝着索引值增大的方向搜索,即在数组中从左到右搜索下列代码演示了这个函数的使用方法:
QByteArray x("sticky question");
QByteArray y("sti");
x.indexOf (y);// returns 0
x.indexOf(y, 1);// returns 10
x.indexOf (y, 10);// returns 10
x.indexOf(y, 11);//returns -1
indexOf()还可以搜索char*和QString类型的数据,函数的原型声明如下:
int indexOf(const char *str, int from=0);
int indexOf(const QString &str, int from = 0);
此外,还有以某个字符为搜索对象的函数声明形式:
int indexof(char ch, int from = 0);使用示例如下:
QByteArray ba ("ABCBA");
ba.indexOf ("B"); // returns 1
ba.indexOf ("B", 1); // returns 3
ba.indexOf ("B", 2); // returns 3
ba.indexOf ("X") ; // returns -1
indexOf()函数是向前搜索,另外还有一个函数lastindexOf()是向后搜索,该函数的原型声明如下:
int lastIndexof(const QByteArray &ba, int from=-1 );