文章目录
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()会将最小的占位符替换掉
如果是两个一样且最小都会一并替换掉
多次调用多于占位符的个数,会报错。
cpp
// 格式化构造字符串
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");

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

字符串转成数值

增加

删除

查找
根据位置找内容
back() 找最后一个
front() 找第一个

根据内容找位置

特色功能
提取子串
从左边开始提取
从右边开始提取
从指定位置提取

切割
按照 什么切割。
QString:: SkipEmptyParts 不包含空字符串
切完会返回一个QStringList 类型,相当于 vector

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

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

QList构造函数
支持列表初始化

增加
<< 支持链式调用
cppQlist 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 判断是否存在