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;  //結果: "\x01\x02mk"

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

  size指定數據長度,默認為-1,那么QByteArray在構造的時候遇到第一個 '\0' 空字符時停止。所以如果你要賦值的數據中確實有 '\0' 的話,需要指定size。

QByteArray array2("hello\0world");
qDebug() << array2;  //結果: "hello"

QByteArray array2("hello\0world", 11);
qDebug() << array2;  //結果: "hello\x00world"

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM