Qt中常用数据类型

本文详细介绍了Qt中的QByteArray和QString数据类型,包括它们的定义、初始化、数据指针获取以及相关操作。QByteArray用于原始字符数组操作,而QString则存储Unicode编码的字符串。此外,还讨论了在QT编程中如何进行QByteArray、QString与char *之间的转换。
摘要由CSDN通过智能技术生成
QByteArray
  1. 定义
    Qt 提供了 QByteArray 类专门用于 字符数组的操作,它的结尾始终跟着‘\0’。QByteArray 没有经过编码,是原始的数据。
  2. 初始化
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(),就是交换两个字符数组,执行速度非常的快。

  1. 获取数据指针
	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 修改一个字符,就会引发深拷贝。

  1. 附所有函数
初始化
    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(
  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值