QByteArray
- 定义
Qt 提供了 QByteArray 类专门用于 字符数组的操作,它的结尾始终跟着‘\0’。QByteArray 没有经过编码,是原始的数据。 - 初始化
QByteArray()
QByteArray(const char *data, int size = -1)
QByteArray(int size, char ch)
QByteArray(const QByteArray &other)
QByteArray(QByteArray &&other)
交换:void swap(QByteArray &other)
实际工程中常用的是第二个构造函数,因为有了指针,所以我们知道了数据在内存中的开头位置,那么用 size 指定我们要多少数据即可。需要说明的是,默认 size 为负,那么 QByteArray 在构造的时候遇到第一个‘\0’空字符时停止。所以如果你要载入的数据中确实有‘\0’的话,需要手动指定 size,否则空字符后面的数据是不会被加载进来的。关于 swap(),就是交换两个字符数组,执行速度非常的快。
- 获取数据指针
char * data()
const char * data() const
const char * constData() const
QByteArray & setRawData(const char *data, uint size)
[static]QByteArray fromRawData(const char *data, int size)
关于 data(),返回指向 QByteArray 中字符数组数据的指针,只要不重新分配空间或者销毁,该指针就保持有效。
关于 constData(),如果只读的话该函数非常快,不会导致深层复制。不过一般该函数用于的场合是那些需要 const char* 参数的地方。
关于 setRawData() 和 fromRawData(),两个函数都是从原始数据中构造 QByteArray。看参数是 const char*,说明无论怎么构建 QByteArray,都不会对数据源进行修改,因为隐式共享的原因,只要用 QByteArray 修改一个字符,就会引发深拷贝。
- 附所有函数
初始化
QByteArray()
QByteArray(const char *data, int size = -1)
QByteArray(int size, char ch)
QByteArray(const QByteArray &other)
QByteArray(QByteArray &&other)
交换:void swap(QByteArray &other)
数组信息
是否空
bool isEmpty() const
bool isNull() const
容量
获取
内存大小:int capacity() const
字符大小:int count() const == int size() const == int length() const
设置
不填充:void reserve(int size)
填充:void resize(int size)
释放不需要的空间
void squeeze()
void shrink_to_fit()
指向数据的指针
char * data()
const char *data() const
const char *constData() const
QByteArray &setRawData(const char *data, uint size)
[static]QByteArray fromRawData(const char *data, int size)
增/删/改/查
增加
从前面
QByteArray &prepend(const QByteArray &ba)
QByteArray &prepend(int count, char ch)
QByteArray &prepend(const char *str)
QByteArray &prepend(const char *str, int len)
QByteArray &prepend(char ch)
void push_front(const QByteArray &other)
void push_front(const char *str)
void push_front(char ch)
从中间
QByteArray &insert(int i, const QByteArray &ba)
QByteArray &insert(int i, int count, char ch)
QByteArray &insert(int i, const char *str)
QByteArray &insert(int i, const char *str, int len)
QByteArray &insert(