• QByteArray详解


    1、概述

    2、初始化

    2.1 QByteArray()

    QByteArray array1;
    array1.resize(4);
    array1[0] = 1;
    array1[1] = 2;
    array1[2] = 'm';
    array1[3] = 'k';
    qDebug() << array1;  //结果: "x01x02mk"

    2.2 QByteArray(const char *data, int size = -1)

      size指定数据长度,默认为-1,那么QByteArray在构造的时候遇到第一个 '' 空字符时停止。所以如果你要赋值的数据中确实有 '' 的话,需要指定size。

    QByteArray array2("helloworld");
    qDebug() << array2;  //结果: "hello"
    
    QByteArray array2("helloworld", 11);
    qDebug() << array2;  //结果: "hellox00world"
    
    QByteArray array3;
    array3 = "hello world";
    qDebug() << array3;    //结果: "hello world"

    2.3 QByteArray(int size, char ch)

    QByteArray array4(5, 'Q');
    qDebug() << array4;    //结果: "QQQQQ"

     3、访问

      QByteArray的访问方式有四种:[]、data[]和at()、constData[]。其中[]和data[]为可读可写;at()和constData[]为只读,因此访问用这两种速度较快。

    4、成员函数

    4.1 char *QByteArray::data()

      返回指向字节数组中存储的数据的指针。

    QByteArray array2("hello world");
    char *data = array2.data();
    qDebug() << array2.data()[0] << array2.data()[1] << array2.data(); //结果:h e hello world
    qDebug() << data[0] << data[1] << data;  //结果:h e hello world

     4.2 QByteArray &QByteArray::fill(char ch, int size = -1)

      将字节数组的每个字节用ch填充,如果size不是默认值-1,则先将字节数组调整为指定size大小,再填充。

    QByteArray array2("hello world");
    qDebug() << array2;  //结果:"hello world"
    array2.fill('m');
    qDebug() << array2;  //结果:"mmmmmmmmmmm"
    array2.fill('m', 5);
    qDebug() << array2;  //结果:"mmmmm"

     4.3 int QByteArray::indexOf(const QByteArray &ba, int from = 0) const

      搜索并返回字节数组中第一次出现指定字节数组ba的索引位置,位置从索引from开始向后搜索。

    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

    4.4 QByteArray QByteArray::left(int len) const

      从最左侧第一个字节开始向右截取len个字节。

    QByteArray x("Pineapple");
    QByteArray y = x.left(4); // y == "Pine"

    附件:所有函数

    https://zhuanlan.zhihu.com/p/51728642

  • 相关阅读:
    Day 15 模块
    Day 14 三元运算符,列表推导式,内置函数
    Day 13 可迭代对象,迭代器对象,for循环迭代,生成器对象,枚举对象
    Day 12 开放封闭原则,装饰器初识
    Day 11 函数对象,函数嵌套,作用域,闭包
    Day 10 函数的形参,实参
    Day 09 函数基础
    Day 08 文件操作模式,文件复制,游标
    HTTP协议
    11,.JS-DOM价绍
  • 原文地址:https://www.cnblogs.com/Mike2019/p/14183226.html
Copyright © 2020-2023  润新知