C++学习之QT中HTTP正则表达式

embedded/2025/4/1 7:48:58/

目录

1.知识点概述

2.BASE64介绍

3.QT中BASE64的使用

4.正则表达式中的位置限定字符

5.修饰数量的特殊字符

6.正则表达式中的字符匹配

7.正则表达式例子

8.正则表达式网址介绍

9.QNETWORKACCESSMANAGER类使用介绍

10.QNETWORKREQUEST类的使用

11.QNETWORKREPLY类的使用

12.使用QT的http类的错误解决

13.服务器端代码的部署

14.项目功能演示


1.知识点概述

1. base64
2. 正则表达式
2.1 基础知识
2.2 常用正则表达式
3. Qt 中使用 http 协议通信
3.1 Qt http 类的使用
3.2 错误提示
4. Qt 登录界面搭建

2.BASE64介绍

2. 为什么要使用 base64
在计算机中任何数据都是按 ascii 码存储的,而 ascii 码的 128 255 之间的值是不可见字符。 而在网络上
交换数据时,比如说从 A 地传到 B 地,往往要经过多个路由设备,由于不同的设备对字符的处理方式有一
些不同,这样那些不可见字符就有可能被处理错误,这是不利于传输的。所以就先把数据先做一个
Base64 编码,统统变成可见字符,这样出错的可能性就大降低了。 base64 的应用场景 :
它可用来作为 电子邮件 的传输 编码
邮件传输协议只支持 ASCII 字符传递,因此如果要传输二进制文件,如:图片、视频是无法实现
的。
Http 协议
HTTP 协议要求请求行和请求头都必须是 ASCII 编码
数据库数据读写 - blob
存储二进制的大数据块
3. base64 算法描述
3 8 位字节( 3*8=24 )转化为 4 6 位的字节( 4*6=24
假设有一个字符串 , 需要对这个字符串分组 , 3 个字节为一组 , 分成 N
将每一组的 3 个字节拆分 , 拆成 4 个字节 , 每个字节有 6bit
6 位的前面补两个 0 ,形成 8 位一个字节的形式
每个组就从 3 个字节变成了 4 个字节
结论 : base64 编码之后的字符串变大了 ,
如果剩下的字符不足 3 个字节,则用 0 填充,输出字符使用 '=' ,因此编码后输出的文本末尾可能会
出现 1 2 '=', 表示补了多少字节,解码的时候,会自动去掉。

3.QT中BASE64的使用

转译字符 -- \
所有的 ASCII 都可以用 “\” 加数字(一般是 8 进制数字)来表示。而 C 中定义了一些字母前加 "\" 来表示常
见的那些不能显示的 ASCII 字符 ,如 \0,\t,\n 等,就称为转义字符,因为后面的 字符 ,都不是它本来的
ASCII 字符意思了。
表示 ASCII -- > 大写字母 M (ASCII 十进制值为 77)
用八进制表示 : \0115
用十六进制表示 : \x4d
C 语言中字符的转译
\a -> 响铃
\b -> 退格
\r -> 回车
\n -> 换行
\\ -> 代表一个反斜线字符 '\'
2. 正则表达式中使用的一些特殊字符
?
+
{
}
|
(
)
[
]

4.正则表达式中的位置限定字符

5.修饰数量的特殊字符

字符
描述
.
匹配除 “\n" 之外的任何单个字符。
x|y
匹配 x y
[xyz]
字符集合。匹配所包含的任意一个字符。
[^xyz]
负值字符集合。匹配未包含的任意字符。
[a-z]
字符范围。匹配指定范围内的任意字符。
[^a-z]
负值字符范围。匹配任何不在指定范围内的任意字符。
\d
匹配一个数字字符。等价于 [0-9]
4. 练习
5. 参考资料
1 . (.|\n)
- 匹配一个字符 , 任意字符
2 . (z|f)ood
- 匹配 : zood, food
3 . [abc]
- 匹配的字符满足 [] 中的任意一个字符都可以
- plain
4 . [^abc]
5 . [a-g0-9]
6 . [^A-Z]
1
2
3
4
5
6
7
8
9
10
# 用户名
^[a-z0-9_-]{3,16} $
# 时间 ( 小时 : 分钟 , 24 小时制 )
((1|0?)[0-9]|2[0-3]):([0-5][0-9])
- (1|0?)[0-9] - > 最大值 : 19 , 最小值 : 0
- 2 [0-3]) - > 范围 : 20 , 23
# IP 地址
\d == [0-9]
192 .168.22.11
((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
- ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.)
- 2 [0-4]\d - > 范围 : 200 - > 249
- 25 [0-5] - > 范围 : 250 - > 255
- [01]?\d\d? - > 范围 : 0 - > 199
- \. - > 将特殊含义的 . 转换为普通含义的 .
- ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.)
- 得到 (0-255).

6.正则表达式中的字符匹配

7.正则表达式例子

8.正则表达式网址介绍

9.QNETWORKACCESSMANAGER类使用介绍

10.QNETWORKREQUEST类的使用

11.QNETWORKREPLY类的使用

12.使用QT的http类的错误解决

13.服务器端代码的部署

14.项目功能演示


http://www.ppmy.cn/embedded/176696.html

相关文章

clamav服务器杀毒(Linux服务器断网状态下如何进行clamav安装、查杀)

ClamAV服务器杀毒(服务器断网状态也可以使用该方法) 服务器因为挖矿病毒入侵导致断网,进行离线的clamav安装并查杀 安装包下载网址:https://www.clamav.net/downloads 安装.deb,如果服务器处于断网状态,可以…

Gitlab服务器数据迁移及版本升级

公司目前使用的GITLAB服务器,docker方式部署,GITLAB版本为13.11.0,由于版本太老存在安全漏洞,原服务器还部署了其他应用,不方便做升级操作,解决思路是将数据迁移新版本的gitlab服务器。 由于gitlab数据备份…

EasyUI数据表格中嵌入下拉框

效果 代码 $(function () {// 标记当前正在编辑的行var editorIndex -1;var data [{code: 1,name: 1,price: 1,status: 0},{code: 2,name: 2,price: 2,status: 1}]$(#dg).datagrid({data: data,onDblClickCell:function (index, field, value) {var dg $(this);if(field ! …

【stm32】用从模式控制器 完成PWM的测量

🌞学习视频还是来自于 铁头山羊 🌿主要是回顾一下他讲的这一章的定时器的部分,具体的话 还是看一下具体铁头山羊的视频,讲的很清楚~~ 整体流程是这样的,首先通过定时器的输出比较功能,配置好PA6产生一个特定…

基于Python+Flask+MySQL+HTML的爬取豆瓣电影top-250数据并进行可视化的数据可视化平台

FlaskMySQLHTML 项目采用前后端分离技术,包含完整的前端,以flask作为后端 Pyecharts、jieba进行前端图表展示 通过MySQL收集格列数据 通过Pyecharts制作数据图表 这是博主b站发布的详细讲解,感兴趣的可以去观看:【Python爬虫可…

【MySQL】一篇讲懂什么是聚簇索引和非聚簇索引(二级索引)以及什么是回表?

1.聚簇索引: 叶子节点直接存储了完整的数据行。 每个表只能有一个聚簇索引,通常是主键(Primary Key)。如果没有定义主键,则MySQL会选择一个唯一且非空索引作为聚簇索引。 特点: 数据存储:叶子结点存储完整的数据行…

docker 容器 php环境中安装gd 、mysql 等扩展

1、先配置阿里云镜像源 cd /etc/apt echo "" > sources.list echo "deb http://mirrors.aliyun.com/debian/ bullseye main contrib" >> /etc/apt/sources.list echo "deb-src http://mirrors.aliyun.com/debian/ bullseye main contrib&q…

MySQL中DDL、DML、DQL、DCL四种语言详细介绍

对比: 分类英文全称中文全称作用常见命令DDLData Definition Language数据定义语言定义和修改数据库结构CREATE, DROP, ALTER, TRUNCATEDMLData Manipulation Language数据操作语言操作表中的数据(增、删、改)INSERT, UPDATE, DELETEDQLData…