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()

其他常用函数

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

QByteArray ba("Hello world");
char *data = ba.data();
while (*data) {cout << "[" << *data << "]" << Qt::endl;++data;
}

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

 QByteArray ba("Montreal");ba.remove(1, 4);  // ba == "Meal"

从位置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" 

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

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

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

QByteArray x("Say yes!");
QByteArray y("no");
x.replace(4, 3, y); // x == "Say no!"

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

QByteArray ba("ab");
ba.repeated(4);             // returns "abababab"

返回一个字节数组,其中包含与基数(默认为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

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

QByteArray x("crazy azimuths");
QByteArray y("az");x.lastIndexOf(y);           // returns 6x.lastIndexOf(y, 6);        // returns 6x.lastIndexOf(y, 5);        // returns 2x.lastIndexOf(y, 1);        // returns -1QByteArray ba("ABCBA");ba.lastIndexOf("B");        // returns 3ba.lastIndexOf("B", 3);     // returns 3ba.lastIndexOf("B", 2);     // returns 1ba.lastIndexOf("X");        // returns -1
QByteArray().isEmpty();         // returns true
QByteArray("").isEmpty();       // returns true
QByteArray("abc").isEmpty();    // returns falseQByteArray().isNull();          // returns true
QByteArray("").isNull();        // returns false
QByteArray("abc").isNull();     // returns false

返回字节数组ba在该字节数组中首次出现的索引位置,从索引位置from开始向前搜索。 如果找不到ba,则返回-1。

QByteArray x("sticky question");
QByteArray y("sti");x.indexOf(y);               // returns 0x.indexOf(y, 1);            // returns 10x.indexOf(y, 10);           // returns 10x.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"

QByteArray相关推荐

  1. json qbytearray 串 转_如何通过QByteArray在JSON中存储QPixmap?

    无法从任意QByteArray构造QString.您需要对字节数组进行编码,使其可以首先转换为字符串.从C语义的角度来看,QString可以从QByteArray构造出来,这有点误导.它是否真的可构建 ...

  2. 《Qt数据类型》--QByteArray,QString,int,hex之间的转化

    对于QString和QByteArray,他们都有一个toInt的静态函数,QString::toInt()是根据string的字面值转化为int类型,比如string:"123" ...

  3. QByteArray怎么转化为QString类型,并且在QLineEdit上面显示出来

    //存文件名字QByteArray temp_filename;for (int i =128;i<257;){temp_filename.append(inbuf[i]);i+=4;}QStr ...

  4. Qt之QByteArray类学习

    QByteArray类提供了字节数组,包含于<QByteArray>头文件中,从Q3CString类继承而来. QByteArray可以存储raw bytes和传统的8-bits的字符串, ...

  5. 11-Qt6 QByteArray字节数组类

    字节数组类QByteArray提供一个字节数组用于存储原始字节,号称 Best array!它比使用char *更方便,该类在串口通信中经常被使用,因为串口通信数据都是一个一个的8位字节流. 1.初始 ...

  6. QT的QByteArray 类的使用

    详细说明 QByteArray类提供字节数组. QByteArray可用于存储原始字节(包括'\ 0')和传统的8位'\ 0'终止的字符串.使用QByteArray比使用const char *更方便 ...

  7. 4.关于QT中的QFile文件操作,QBuffer,Label上添加QPixmap,QByteArray和QString之间的区别,QTextStream和QDataStream的区别,QT内存映射(

     新建项目13IO 13IO.pro HEADERS += \ MyWidget.h SOURCES += \ MyWidget.cpp QT += gui widgets network CON ...

  8. Qt QString 中文 char* UTF-8 QByteArray QTextCodec unicode gb2312 GBK 乱码与转码问题

    代码如下:如果不不设全局的字符集是utf-8,那么网上一般的方法是可以转的.如下程序中 #define DD 1的情况下:但是如果设置了全局的utf-8,再用以前的方法: QByteArray ba= ...

  9. Qt中 Qstring 与QbyteArray的互相转换

    摘自博客:http://blog.csdn.net/xgbing/article/details/7771898 QByteArray与QString之间的转换: 示例: [cpp] view pla ...

  10. Qt QByteArray 转换 QString QT5.12.7

    Qt QByteArray 转换 QString QT5.12.7 void MainWindow::slot_send() { const QString data = m_sendLineEdit ...

最新文章

  1. 阿里云安全肖力:安全基础建设是企业数字化转型的基石
  2. dockone上2015.08 Docker有价值文章
  3. Leetcode 剑指 Offer 42. 连续子数组的最大和 (每日一题 20211014)
  4. Linq Coding -- Part Three [Let子句]
  5. 修改linq结果集_UTXO集优化
  6. 垃圾回收机制与引用类型
  7. c语言冒泡结构入门程序,C语言入门:冒泡排序
  8. python pathlib模块_【Python Snippets】Pathlib 模块
  9. 4. tensorflow2实现抽样分布—卡方分布、F分布、t分布、Beta分布、Gamma分布——python实战
  10. OmniPlayer Pro for Mac(全能视频播放器)
  11. eclipse快捷方式打不开解决方法
  12. 清除访问网络共享文件夹密码
  13. 【文献阅读】Cost-Sensitive Portfolio Selection via Deep Reinforcement Learning
  14. 刷了几千道算法题,这些我私藏的刷题网站都在这里了!
  15. 到底什么是幸存者偏差?有哪些例子?
  16. IDEA无法启动Tomcat显示[localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirector
  17. Broadcasts在Android7.0以及Android8.0中的变更
  18. 查看git密码_新电脑配置git和github
  19. 《玩转Spring全家桶》第70-77节
  20. 关于线程池的五种实现方式,七大参数,四种拒绝策略

热门文章

  1. 紧张的飞秋(FEIQ)爱好者汗都下来了
  2. 『无聊透顶』一篇很无聊的文章
  3. Transact-SQL数据类型(文本/图形/日期和时间/货币/特定类型)
  4. 经典面试题(41):以下代码将输出的结果是什么?
  5. 官方:Angular 5 推迟到10月底发布
  6. linux防火墙策略文件夹,Linux防火墙iptables的策略
  7. telnet后为啥打开的时防火墙_《和平精英》停服时玩家打开国际服,淘汰1个敌人后收到1个提示!...
  8. STM32----摸石头过河系列(一)
  9. Cibersort免疫浸润的在线分析及R语言代码实现
  10. 他为华裔写了几封信......