C++
C++学习记录
无聊的阿乐
每天进步一点点,量变才会质变
展开
-
C++ 17 : 一个队列使用 std::any存储多种自定义类型的数据
【代码】C++ 17 : 一个对列使用 std::any存储多种自定义类型的数据。原创 2024-04-30 10:29:53 · 183 阅读 · 0 评论 -
16进制 转字符串,一种是直接转成对应字符串,一种是转成字符串
以下两种方式同样效果。原创 2024-03-26 17:33:37 · 655 阅读 · 0 评论 -
C++ 计算某个文件的 MD5
网上截取的代码片段,备用工具原创 2024-01-12 11:40:13 · 1017 阅读 · 0 评论 -
c++ 使用 at()访问数组 抛出异常
区别在于,operator[]不做边界检查, 哪怕越界了也会返回一个引用,当然这个引用是错误的引用,如何不小心调用了这个引用对象的方法,会直接导致应用退出。而由于at会做边界检查,如果越界,会抛出异常,应用可以try catch这个异常,应用还能继续运行。当我们定义一个数组vector b(10)后,b[]和b.at()都可以对v中元素进行访问,平时一般大家使用的都是v[]这种访问方法,以至于将v.at()这种访问方式忘记了。str[] 不会检查下标越界,不会抛出异常,所以即使有错误,try 也检测不到。原创 2023-12-23 21:40:52 · 783 阅读 · 0 评论 -
TCP keepalive 保活 的详解
TCP通信保活参数原创 2023-02-23 21:47:38 · 515 阅读 · 0 评论 -
关于QT跨平台和编译器的理解
Qt开发经验原创 2023-02-08 11:53:05 · 2006 阅读 · 0 评论 -
QT中QDateTime的用法,分离出年月日时分秒
QT中日期的用法原创 2022-12-16 17:54:52 · 2485 阅读 · 0 评论 -
QT学习之文件读写操作
一、QFile 对文件进行读写操作1、 QFile进行读写操作2、 QFile file( path 文件路径)3、 读(1) file.open(打开方式) QIODevice::readOnly(2) 全部读取 file.readAll() 按行读 file.readLine() atend()判断是否读到文件尾(3)默认支持编码格式 utf-8(4)利用编码格式类 指定格式 QTextCodeC(5)QTextCodec * codec = QTextCodec::codec原创 2022-03-16 22:37:47 · 18482 阅读 · 0 评论 -
QT使用webenginewidgets加载百度在线地图(GPS坐标转百度坐标)
QT加载百度在线地图5、完整工程源代码https://download.csdn.net/download/weixin_44618297/87254756备注:目前遗留问题:debug和release版本有的无法运行,目前只可以使用MSVC32 release版本的,以后有时间在调这个问题吧,嘿嘿原创 2022-12-07 19:25:40 · 1577 阅读 · 0 评论 -
C++读写解析ini配置文件
支持解析ini文件支持修改、保存ini文件支持设置多个注释符,默认为“#”和’;’运行在Linux 下。原创 2022-11-04 18:58:43 · 3464 阅读 · 0 评论 -
Cmake打包deb包
参考资料:Cpack入门。原创 2022-10-12 13:04:08 · 1169 阅读 · 0 评论 -
基于QT的体温监测与报警项目
任务概述在本次“新冠疫情”的冲击下,某智能物联网工程师所在的小区需要监控人员体温,现新进了一批可以采集人体体温的智能体温计,但是小区有三个门:正门,侧门,后门,每个门都会有人员流动,物业希望能够在监控室查看相关人员的体温,可以做匹配记录。刚好该智能物联网工程师拥有该能力,需要完成以下有关需求:(1) 每个智能体温计都能采集体温数据并自动上传该数据到监控平台(2) 监控平台可以实时查看各门,各人员的体温(3) 对于出现异常体温(超过 37.3℃)监控平台会发出报警涉及知识点1、C 语言与C++基础原创 2020-07-26 11:15:44 · 5864 阅读 · 2 评论 -
VS2015采用loadlibrary方式调用dll库
顺便再讲下关于调用约定和函数符号的关系,即_stdcall,_cdecl.还有就是extern"c"对函数名符号的影响。说明库里边已经把函数导出来了,使用loadlibrary的时候需要和导出名字对应上。由于_stdcall是被调用方清理堆栈,所以函数符号里面包含了传参的信息。我们先编译一个库文件,然后采用Loadlibrary的方式调用。由于_cdecl是调用方清理堆栈,所以只需要函数名就可以。+函数名+@@YG+返回类型+参数1类型…+函数名+@@YA+返回类型+XZ。.........原创 2022-07-28 22:30:59 · 1458 阅读 · 0 评论 -
QT编译出来的exe以管理员权限启动
QT编译生成的exe启动时直接以管理员权限启动原创 2022-07-25 15:02:09 · 629 阅读 · 0 评论 -
web编程(一)使用Apache搭建http服务器,实现CGI
专门处理HTTP请求的服务器,也被称为Web服务器。常用的Web服务器有Apache和Nginx,当然几大巨头五联网公司也都有其独自研发的Web服务器,比如阿里巴巴的Tengine。我们使用Apache作为Web服务器,并按照下面5个步骤安装好Apache。............原创 2022-07-20 22:11:57 · 1225 阅读 · 0 评论 -
创建一个守护进程
参考《后台开发核心技术与应用》第10.4小节。原创 2022-07-16 11:27:31 · 678 阅读 · 0 评论 -
使用 poll 函数提高服务器处理能力
参考《后台开发:核心技术与应用》7.3小节运行平台为Linuxserver.cppclient.cpp原创 2022-07-09 18:03:57 · 144 阅读 · 0 评论 -
使用 select 函数提高服务器的处理能力
server.cppclient.cpp原创 2022-07-07 20:55:32 · 112 阅读 · 0 评论 -
C++ 实现FSM有限状态机
现态:当前所处状态次态:当条件满足后,即将转移的下一个状态动作:当满足某个事件时执行的动作;动作执行完毕后可以转移到另一个状态或保持原有状态条件:转移状态所需的条件,当满足条件时,会触发一个动作或进行状态转移案例:学生的日常生活。学生的日常生活包含以下几个状态:起床、上学、吃午饭、做作业、睡觉;每个状态之间进行转移需要执行相应的事件。分为以下几个步骤来实现:(1)绘制状态转移图(2)创建状态转移的FSMItem类枚举:所有状态State、所有事件Event;成员变量:现态_curState、事件_event原创 2022-06-26 16:02:00 · 1582 阅读 · 0 评论 -
一个初级多线程服务器模型
一个服务端程序,能与多个客户端进行通信。那么,这个服务端是怎么实现的呢?它就是很常规的多线程服务器。运行平台为VS2015。既然是多线程服务器,那么,这些线程肯定是有明确分工的。主线程来处理网络的连接,而通信线程来处理客户端与服务端的通信。而且,主线程要负责多个客户端的连接请求,所以不能阻塞主线程哦,因此必须用非阻塞socket.服务端程序如下:2、客户端实现我们可以看到,上述服务端的程序需要有主线程和通信线程,而客户端的程序就相对简单了,主线程本身就是通信线程。程序如下:我们编译并运行程序,开启3个原创 2022-06-25 16:35:01 · 142 阅读 · 0 评论 -
工作中一些常用的工具函数
来自于自己写的加密机客户端源码,包括时间日期格式校验,IP校验,大小端转换,文件查找等原创 2022-06-22 18:08:27 · 111 阅读 · 0 评论 -
C++11 Lambda 表达式在QT中的应用
更详细的请看:https://blog.csdn.net/weixin_43055404/article/details/103299156Lambda表达式C++11版本特性:创建 匿名函数对象基本语法:[ capture ] ( params ) opt -> ret { body; };capture中的数据:- [=] 获取当前函数体的所有变量,以值传递传入- [&] 允许使用引用传递变量opt选项:- mutable 可修改值传递进来的参数[只是拷贝了一份,不会原创 2022-02-27 18:02:52 · 490 阅读 · 0 评论 -
C++11 跨平台 代码,包括线程、时间、互斥锁、Event 等
完整代码链接:C++11 平台相关代码封装#include <string>#include <iostream>#include <memory>#include <mutex>#include <thread>#include <algorithm>#include <chrono>#include "Event.h"#include "ByteArray.h"#include "ThreadP原创 2022-02-10 21:35:03 · 904 阅读 · 0 评论 -
C++多语言模块实现,界面显示多种语言
C++ 实现多语言打印输出原创 2022-01-27 18:11:16 · 1568 阅读 · 0 评论 -
C++:查找字符串子串并替换
string a;//在指定串里查找 string b;//要查找的串 string c;//要替换成的新串 cin>>a>>b>>c; int pos; pos = a.find(b);//查找指定的串 while (pos != -1) { a.replace(pos,b.length(),c);//用新的串替换掉指定的串 pos = a.find(b);//继续查找指定的串,直到所有的都找到为止 } cout<<a<&.原创 2021-12-20 16:34:28 · 2818 阅读 · 2 评论 -
基于STL的演讲比赛流程管理系统
目录演讲比赛流程管理系统1、 演讲比赛程序需求1.1 比赛规则1.2 程序功能1.3 程序效果图:2、 项目创建2.1 创建项目2.2 添加文件3、 创建管理类3.1创建文件3.2 头文件实现3.3 源文件实现4、 菜单功能4.1 添加成员函数4.2 菜单功能实现4.3 测试菜单功能5、 退出功能5.1 提供功能接口5.2 实现退出功能5.3测试功能6、演讲比赛功能6.1 功能分析6.2 创建选手类6.3 比赛6.3.1 成员属性添加6.3.2 初始化属性6.3.3 创建选手6.3.4 开始比赛成员函数添原创 2021-11-10 20:37:27 · 1201 阅读 · 0 评论 -
C++ 学习之集合算法:set_intersection(交集)、set_union(并集)、set_difference(差集)
1、首先介绍一下相关概念(1) 并集对于两个给定集合A、B,由两个集合所有元素构成的集合,叫做A和B的并集。记作:AUB 读作“A并B”例:{ 3,5 }U{ 2,3,4,6 } = { 2,3,4,5,6 }(2) 交集对于两个给定集合A、B,由属于A又属于B的所有元素构成的集合,叫做A和B的交集。记作: A∩B 读作“A交B”例: A = { 1,2,3,4,5 },B = { 3,4,5,6,8 },A∩B = { 3,4,5 }(3) 差集假设有集合A和B原创 2021-11-05 15:08:33 · 6543 阅读 · 0 评论 -
C++ 学习之算术生成算法accumulate(累加)、fill(填充)
1、函数原型算术生成算法属于小型算法,使用时包含的头文件为 #include <numeric>accumulate(iterator beg, iterator end, value);// 计算容器元素累计总和// beg 开始迭代器// end 结束迭代器// value 起始值fill(iterator beg, iterator end, value);// 向容器中填充元素// beg 开始迭代器// end 结束迭代器// value 填充的值原创 2021-11-05 11:28:52 · 970 阅读 · 0 评论 -
C++ 学习之常用拷贝和替换算法copy、replace、replace_if、swap
1、函数原型:copy(iterator beg, iterator end, iterator dest);// 按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置// beg 开始迭代器// end 结束迭代器// dest 目标起始迭代器replace(iterator beg, iterator end, oldvalue, newvalue);// 将区间内旧元素 替换成 新元素// beg 开始迭代器// end 结束迭代器// oldvalue 旧元原创 2021-11-05 10:48:04 · 338 阅读 · 0 评论 -
C++学习之常用排序算法merge(合并)、reverse(反转)
1、 merge功能描述:两个容器元素合并,并存储到另一容器中两个容器元素必须是有序的,都是同样顺序的,不能一个升序一个降序,而且合并之后的新容器也是有序的函数原型:merge(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest);// 容器元素合并,并存储到另一容器中// 注意: 两个容器必须是有序的// beg1 容器1开始迭代器// end1 容器1结束迭代器// beg2原创 2021-11-04 21:01:49 · 1638 阅读 · 0 评论 -
C++ 学习之常用排序算法sort和洗牌算法random_shuffle
函数原型:sort(iterator beg, iterator end, _Pred);// 按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置// beg 开始迭代器// end 结束迭代器// _Pred 谓词random_shuffle(iterator beg, iterator end);// 指定范围内的元素随机调整次序// beg 开始迭代器// end 结束迭代器#include<iostream>#include原创 2021-11-04 17:37:29 · 210 阅读 · 0 评论 -
C++ 学习之查找统计算法count_if
功能描述:按条件统计元素个数函数原型:count_if(iterator beg, iterator end, _Pred);// 按条件统计元素出现次数// beg 开始迭代器// end 结束迭代器// _Pred 谓词#include<iostream>#include<vector>#include<string>#include<algorithm>using namespace std;/*********原创 2021-11-04 16:39:45 · 451 阅读 · 0 评论 -
C++ 学习之查找统计算法count
1、函数原型:count(iterator beg, iterator end, value);// 统计元素出现次数// beg 开始迭代器// end 结束迭代器// value 统计的元素2、示例代码:#include<iostream>#include<vector>#include<string>#include<algorithm>#include<functional>using namespace s原创 2021-11-04 11:18:30 · 933 阅读 · 0 评论 -
C++ 学习之查找算法adjacent_find(相邻重复查找)、binary_search(二分法查找)
1、 adjacent_find功能描述:查找相邻重复元素函数原型:adjacent_find(iterator beg, iterator end);// 查找相邻重复元素,返回相邻元素的第一个位置的迭代器// beg 开始迭代器// end 结束迭代器2、 binary_search功能描述:查找指定元素是否存在函数原型:bool binary_search(iterator beg, iterator end, value);// 查找指定的元素,查到 返回tr原创 2021-11-03 21:01:15 · 864 阅读 · 0 评论 -
C++ 学习之查找算法find、find_if
1、 find查找指定元素,找到返回指定元素的迭代器,找不到返回结束迭代器end()利用find可以在容器中找指定的元素,返回值是迭代器函数原型:find(iterator beg, iterator end, value);// 按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置// beg 开始迭代器// end 结束迭代器// value 查找的元素2、 find_if按条件查找元素函数原型:find_if(iterator beg, ite原创 2021-11-03 17:45:41 · 202 阅读 · 0 评论 -
C++ 学习之常用遍历算法
1、 for_each实现遍历容器for_each(iterator beg, iterator end, _func);// 遍历算法 遍历容器元素// beg 开始迭代器// end 结束迭代器// _func 函数或者函数对象2、 transform搬运容器到另一个容器中transform(iterator beg1, iterator end1, iterator beg2, _func);//beg1 源容器开始迭代器//end1 源容器结束迭代器/原创 2021-11-02 21:10:15 · 418 阅读 · 0 评论 -
C++ 学习之内建函数对象 - 关系仿函数和逻辑仿函数
关系仿函数原型:template<class T> bool greater<T> //大于template<class T> bool greater_equal<T> //大于等于template<class T> bool equal_to<T> //等于template<class T> bool not_eq原创 2021-11-02 15:07:11 · 236 阅读 · 0 评论 -
C++ 学习之内建函数对象 - 算术仿函数(加减乘除、取反、取余)
这些仿函数所产生的对象,用法和一般函数完全相同使用内建函数对象,需要引入头文件 #include<functional>#include<iostream>#include<algorithm>#include<functional>//包含内建函数对象的头文件using namespace std;//取反,一元运算,即需要一个参数void test01(){ negate<int> n; cout << .原创 2021-11-02 14:07:11 · 432 阅读 · 0 评论 -
C++ 学习之谓词 - 一元谓词和二元谓词
#include<iostream>#include<string>#include<vector>#include<algorithm>using namespace std;/*返回bool类型的函数对象(仿函数)称为谓词*/class Greater{public: bool operator()(int v)//如果operator()接受一个参数,那么叫做一元谓词 { return v < 5;//返回小于5的元素原创 2021-11-02 10:32:51 · 572 阅读 · 0 评论 -
C++ 学习之函数对象(仿函数)
#include<iostream>#include<string>#include<ctime>using namespace std;class MyAdd{public: MyAdd() { num = 0; } int operator()(int v1,int v2) { num++; return v1 + v2; } int num;};class PrintString{public: voi原创 2021-11-01 20:49:59 · 146 阅读 · 0 评论