当前位置: 首页 > news >正文

Qt数据结构与编码技巧全解析

文章目录

  • Qt中的数据结构
    • QDebug
      • qDebug函数
      • QT的内置类型一般都会重载 << 运算符
      • QT的几何规则
    • QString 字符串
      • 编码
      • 变长 VS 定长
      • QString 适合中转数据吗?
      • Qstring 的底层使用写时复制
      • QString的具体使用
      • QString 的构造函数
      • 格式化构造
      • 数值转化为字符串
      • 字符串转成数值
      • 增加
      • 删除
      • 查找
        • 根据位置找内容
        • 根据内容找位置
      • 特色功能
        • 提取子串
        • 切割
    • 容器
      • 序列容器的接口
        • QList构造函数
        • 增加
        • 删除
          • 根据位置查元素
          • 根据元素查位置
        • QQueue是QList的子类
        • QStack是Qvector的子类
    • 关联式容器
      • QSet 键的集合
      • QMap

Qt中的数据结构

QDebug

取代 std::cout / std :: cerr

qDebug函数

既可以当做printf 来用,也可以当做cout 来用

与他们的区别就是自动换行

在这里插入图片描述

QT的内置类型一般都会重载 << 运算符

在这里插入图片描述

QT的几何规则

在这里插入图片描述

计算机世界的矩形

与坐标系平行

所以知道矩形的左上顶点,高和宽就可以了

Qpoint(点)

QLine(线)

QRect(面)

在这里插入图片描述

QString 字符串

std:: string 功能很弱:所以在大多数时候可以看做vector

  • 编码模式(乱码问题)
  • split(不支持)

编码

在这里插入图片描述

在这里插入图片描述

变长 VS 定长

在这里插入图片描述

QString str3(“hello中国”);// 实际上底层会调用QString fromUtf8

在这里插入图片描述

在这里插入图片描述

不管编码是什么格式都要转化为utf-16 编码

QString 适合中转数据吗?

不适合,因为QString是在真值不变的情况下,改变编码,会将原来的数据改掉。

buf read(fd, buf…) write(fd, buf…)

Qstring 的底层使用写时复制

在这里插入图片描述

在这里插入图片描述

QString的具体使用

先弄清楚业务上需要什么东西,再了解具体的接口和函数

构造函数

查询

修改

特色功能

QString 的构造函数

在这里插入图片描述

还可以使用工厂模式来构造对象

在这里插入图片描述

格式化构造

调用arg()会将最小的占位符替换掉

如果是两个一样且最小都会一并替换掉

多次调用多于占位符的个数,会报错。

// 格式化构造字符串QString pattern = "I am %1. I am %2 years old!";qDebug() << pattern.arg("caixukun");    //会将最小的占位符替换掉qDebug() << pattern.arg("caixukun").arg("26");qDebug() << pattern.arg("caixukun").arg("26").arg("27");QString pattern2 = "I am %1. I am %1 years old!";qDebug() << pattern2.arg("caixukun");

在这里插入图片描述

数值转化为字符串

    int i = 1234;QString str = QString("%1").arg(i); //数字转化为字符串 atoi std::to_stringqDebug() << str;

在这里插入图片描述

字符串转成数值

在这里插入图片描述

增加

在这里插入图片描述

删除

在这里插入图片描述

查找

根据位置找内容

back() 找最后一个

front() 找第一个

在这里插入图片描述

根据内容找位置

在这里插入图片描述

特色功能

提取子串

从左边开始提取

从右边开始提取

从指定位置提取

在这里插入图片描述

切割

按照 什么切割。

QString:: SkipEmptyParts 不包含空字符串

切完会返回一个QStringList 类型,相当于 vector

在这里插入图片描述

需求切割字符串,并存储到map中?

在这里插入图片描述

容器

序列容器的接口

这三种容器的函数接口都相同,了解一个其他自然会。

在这里插入图片描述

QList构造函数

支持列表初始化

在这里插入图片描述

增加

<< 支持链式调用

Qlist Mylist = {1, 3, 5};
Mylist << 7 << 9;

在这里插入图片描述

删除

在这里插入图片描述

根据位置查元素

operator[]

at()

在c++中,[]不会做边界检查,at()会做边界检查

在Qt中,[]也会做边界检查

在这里插入图片描述

根据元素查位置

indexof () 从左往右查

lastIndexOf 从右往左查

contains 是否包含

count 有几个

在这里插入图片描述

QQueue是QList的子类

在这里插入图片描述

QStack是Qvector的子类

在这里插入图片描述

关联式容器

在这里插入图片描述

QSet 键的集合

在这里插入图片描述

在这里插入图片描述

QMap

operator[] 和 insert 可以增,和修改

remove 用来删除

contains 判断是否存在
在这里插入图片描述

http://www.xdnf.cn/news/1368181.html

相关文章:

  • Spring - 文件上传与下载:真正的企业开发高频需求——Spring Boot文件上传与下载全场景实践指南
  • 基于stm32的物联网OneNet火灾报警系统
  • 支持向量机(SVM)内容概述
  • Hive高阶函数之行转列JSON数据解析
  • uniapp 引入使用u-view 完整步骤,u-view 样式不生效
  • 要闻集锦|阿里官网调整为四大业务板块;华为云重组多个事业部涉及上千人;群核科技在港交所更新招股书
  • 开源 python 应用 开发(十三)AI应用--百度智能云TTS语音合成
  • vscode 配置 + androidStudio配置
  • uniapp 自动升级-uni-upgrade-center
  • 复盘一个诡异的Bug之FileNotFoundException
  • 【实时Linux实战系列】实时信号处理在通信中的应用
  • leetcode-python-383赎金信
  • 为什么选择爱普生TG5032CFN温补晶振—可穿戴设备?
  • MATLAB Figure画布中绘制表格详解
  • PySINDy
  • 扩展现有的多模块 Starter
  • 【yocto】Yocto Project 核心:深入了解.bbclass文件
  • DevSecOps 集成 CI/CD Pipeline:实用指南
  • OnlyOffice ARM 架构编译教程
  • Hive的核心架构
  • 科普 | 5G支持的WWC架构是个啥(1)?
  • Spring Boot 集成 Docker 构建与发版完整指南
  • Netty源码—性能优化和设计模式
  • (vue)el-progress左侧添加标签/名称
  • 机器视觉学习-day02-灰度化实验
  • 【云计算】云原生(Cloud Native)
  • Spark云原生流处理实战与风控应用
  • 【云原生】CentOS安装Kubernetes+Jenkins
  • 【语法】【C+V】本身常用图表类型用法快查【CSDN不支持,VSCODE可用】
  • 云计算学习笔记——Linux硬盘、硬盘划分、交换空间、自动挂载篇