QByteArray

QByteArray

  • 该类是一个用于处理字符串的类似于 C++string 类型的类
  • 该类保证字符串以'\0'结尾,并使用隐式共享(copy-on-write)来减少内存用量和不必要的数据复制。
  • 适合用于存储纯二进制数据和内存资源比较短缺的情况下。

构造函数如下

 

  • QByteArray(QByteArray &&other)
  • QByteArray(const QByteArray &other)  
  • QByteArray(int size, char ch) //构造一个大小为size的字节数组,每个字节都设置为字符ch。
  • QByteArray(const char *data, int size = -1)
  • QByteArray()

其他常用函数

  • char *QByteArray::data()
  • const char *QByteArray::constData() const

返回指向存储在字节数组中的数据的指针。 该指针可用于访问和修改组成数组的字节。 数据以'\ 0'终止,即,返回的字符串中的字节数是size()+ 1(对于'\ 0'终止符)。

QByteArray ba("Hello world");
char *data = ba.data();
while (*data) {
      cout << "[" << *data << "]" << Qt::endl;
      ++data;
}
  • QByteArray &QByteArray::remove(int pos, int len)

//从索引位置pos开始,从数组中删除len个字节,并返回对该数组的引用。如果pos超出范围,则什么也不会发生。 如果pos有效,但是pos + len大于数组的大小,则数组将在位置pos处被截断。

 QByteArray ba("Montreal");
 ba.remove(1, 4);  // ba == "Meal"
  • QByteArray QByteArray::mid(int pos, int len = -1) const

从位置pos开始,从该字节数组返回一个包含len个字节的字节数组。如果len为-1(默认值),或者pos + len> = size(),则返回一个字节数组,其中包含从位置pos到字节数组末尾的所有字节。

QByteArray x("Five pineapples");
QByteArray y = x.mid(5, 4);     // y == "pine"
QByteArray z = x.mid(5);        // z == "pineapples" 
  • QByteArray QByteArray::left(int len) const

返回一个字节数组,其中包含此字节数组的最左边的len个字节。如果len大于size(),则返回整个字节数组。

QByteArray x("Pineapple");
QByteArray y = x.left(4); // y == "Pine" 
  • QByteArray &QByteArray::replace(int pos, int len, const QByteArray &after)

将索引位置pos中的len个字节替换为之后的字节数组,并返回对此字节数组的引用。

QByteArray x("Say yes!");
QByteArray y("no");
x.replace(4, 3, y); // x == "Say no!"
  • QByteArray QByteArray::repeated(int times) const 

返回重复指定次数的此字节数组的副本。如果times小于1,则返回一个空字节数组。

QByteArray ba("ab");
ba.repeated(4);             // returns "abababab"
  • QByteArray QByteArray::number(int n, int base = 10)

返回一个字节数组,其中包含与基数(默认为10)相等的数字n的字符串。底数可以是2到36之间的任何值。

int n = 63;
QByteArray::number(n);              // returns "63"
QByteArray::number(n, 16);          // returns "3f"
QByteArray::number(n, 16).toUpper();  // returns "3F"

 QByteArray QByteArray::number(double n, char f = 'g', int prec = 6)
//返回一个包含打印值n的字节数组,其格式为f,精度为prec。参数n按照指定的f格式进行格式化,默认情况下为g
e 格式为 [-]9.9e[+|-]999
E 格式为 [-]9.9E[+|-]999
f 格式为 [-]9.9
g use e or f format, 哪一个最简洁
G use E or f format, 哪一个最简洁

QByteArray ba = QByteArray::number(12.3456, 'E', 3); // ba == 1.235E+01
  • int QByteArray::lastIndexOf(const QByteArray &ba, int from = -1) const
  • int QByteArray::lastIndexOf(char ch, int from = -1) const
  • int QByteArray::lastIndexOf(const char *str, int from = -1) const

返回字节在该字节数组中最后一次出现的索引位置,从索引位置from开始向后搜索。 如果from为-1(默认值),则搜索从最后一个字节开始。 如果找不到ba,则返回-1。

QByteArray x("crazy azimuths");
QByteArray y("az");
  x.lastIndexOf(y);           // returns 6
  x.lastIndexOf(y, 6);        // returns 6
  x.lastIndexOf(y, 5);        // returns 2
  x.lastIndexOf(y, 1);        // returns -1

QByteArray ba("ABCBA");
  ba.lastIndexOf("B");        // returns 3
  ba.lastIndexOf("B", 3);     // returns 3
  ba.lastIndexOf("B", 2);     // returns 1
  ba.lastIndexOf("X");        // returns -1
  • bool QByteArray::isEmpty() const
  • bool QByteArray::isNull() const
QByteArray().isEmpty();         // returns true
QByteArray("").isEmpty();       // returns true
QByteArray("abc").isEmpty();    // returns false

QByteArray().isNull();          // returns true
QByteArray("").isNull();        // returns false
QByteArray("abc").isNull();     // returns false

 

  • int indexOf(const QByteArray &ba, int from = 0) const
  • int indexOf(char ch, int from = 0) const
  • int indexOf(const char *str, int from = 0) const
  • int indexOf(const QString &str, int from = 0) const

返回字节数组ba在该字节数组中首次出现的索引位置,从索引位置from开始向前搜索。 如果找不到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
  • void QByteArray::chop(int n) 

从字节数组的末尾删除n个字节。如果n大于size(),则结果为空字节数组。

QByteArray ba("STARTTLS\r\n");
ba.chop(2);                 // ba == "STARTTLS"
 QByteArray ba1("ca\0r\0t");
  ba1.size();                     // Returns 2.
  ba1.constData();                // Returns "ca" with terminating \0.

  QByteArray ba2("ca\0r\0t", 3);
  ba2.size();                     // Returns 3.
  ba2.constData();                // Returns "ca\0" with terminating \0.

  QByteArray ba3("ca\0r\0t", 4);
  ba3.size();                     // Returns 4.
  ba3.constData();                // Returns "ca\0r" with terminating \0.

  const char cart[] = {'c', 'a', '\0', 'r', '\0', 't'};
  QByteArray ba4(QByteArray::fromRawData(cart, 6));
  ba4.size();                     // Returns 6.
  ba4.constData();                // Returns "ca\0r\0t" without terminating \0.

QByteArray x("and");
  x.prepend("rock ");         // x == "rock and"
  x.append(" roll");          // x == "rock and roll"
  x.replace(5, 3, "&");       // x == "rock & roll"

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值