![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
-快乐的程序员-
这个作者很懒,什么都没留下…
展开
-
SM4加密解密的C++代码
本代码源于文章:https://blog.csdn.net/nicai_hualuo/article/details/121626931 中提供的算法,进行了完善而已。SM4的加密,使用了ECB模式,PKCS7填充,实现了对十进制、字符串的加密解密,加密结果和解密参数支持十六进制字符串和base64两种方式。原创 2023-06-14 16:56:27 · 1833 阅读 · 1 评论 -
sm3加密(32位哈希,64位十六进制数据)
https://blog.csdn.net/nicai_hualuo/article/details/121555000 中介绍了sm3的算法并给出了可用代码,我只是将其拷贝过来,测试、去掉多余的输出,并进行了简单封装,以方便项目中使用。用法见main函数。原创 2023-06-14 11:15:59 · 3275 阅读 · 1 评论 -
C++容器迭代删除元素的正确方法
原理是:在擦除之前,先将迭代器往后移动。原创 2023-03-10 20:16:36 · 1387 阅读 · 1 评论 -
windows里的vscode的c_cpp_properties.json
在打开代码目录中建立目录.vscode,目录中存放c_cpp_properties.json,内容如下,可以准确识别代码定义,否则会有很多波浪线,提示代码无法识别。原创 2022-11-29 15:17:01 · 1344 阅读 · 0 评论 -
C++正则获取IP地址
【代码】C++正则获取IP地址。原创 2022-10-08 15:16:36 · 1005 阅读 · 0 评论 -
用mysql C api存取二进制数据
mysql的c接口,使用普通的query方法,很难获取到二进制数据。使用mysql_stmt_前缀的函数,用mysql_stmt_bind_result的方式,可针对各种类型的数据进行获取操作原创 2022-09-15 16:54:30 · 574 阅读 · 0 评论 -
des对称加密解密的C++接口封装
网上找到的des对称加密解密的代码,自己只是做个备份保存,方便以后用到的时候过来复制一下。原创 2022-09-15 15:58:07 · 395 阅读 · 0 评论 -
libssh2+websocketpp做后端,vue xterm做前端的web端shell终端
程序采用多线程方式,有心跳监测,经过大量测试,运行相对很稳定的一段程序。之前发布了一篇文章,前端是一样的,只不过后端用的nodejs技术做的后台脚本,那个脚本太简单了,毕竟是解释性语言,就是节省开发时间,而且性能也不会太差。websocketpp的下载地址https//github.com/zaphoyd/websocketpp。libssh2下载地址https//github.com/libssh2/libssh2。boost的下载地址https//www.boost.org/.........原创 2022-07-22 14:20:51 · 1469 阅读 · 0 评论 -
使用libssh2做的ssh客户端(epoll模型,占用资源低)
libssh2使用比较抽象,网上例子多但是经过详细测试的却不多,本文用网上的例子编译运行后,发现该例子运行后即使空闲时CPU占用达到100,经过改进,且改为epoll模型后用,CPU占用率低至空闲时0%。...原创 2022-07-08 15:23:29 · 860 阅读 · 2 评论 -
scandir按文件名升序获取满足条件的文件名
如果用readdir扫描目录,文件名是按照索引排序的,会显得凌乱。在某些情况下我们需要文件名的顺序排列,那么久需要用scandir了。按文件名升序排列的获取如下所示:原创 2022-06-24 15:46:16 · 360 阅读 · 0 评论 -
websocketpp基本用法
websocketpp是一个基于C11标准开发的websocket c++框架,文档地址为https://docs.websocketpp.org/getting_started.html,源码地址为https://github.com/zaphoyd/websocketpp(经常打不开)。典型使用方法如下代码,额外应该加上多线程,在主线程中针对每个客户端管理其活跃时间,定期清理不活跃的客户端。...原创 2022-06-08 11:22:41 · 7189 阅读 · 0 评论 -
json.hpp解析和遍历json数据
json.hpp遍历操作json数据的方法原创 2022-06-07 17:02:08 · 1266 阅读 · 0 评论 -
boost解析xml文件(读取)
给大家讲讲boost读取xml文件时踩过的坑。原创 2022-05-26 11:34:25 · 1240 阅读 · 0 评论 -
c++获取当前日期时间字符串yyyymmddhhiiss
C++里获取当前时间的字符串的封装。原创 2022-05-16 16:57:24 · 1910 阅读 · 0 评论 -
GDAL api读写shp文件的方法
GDAL的资料实在太少了,不便上手,还好百度搜索还能找到比较优秀的文章,参考如下:https://www.cnblogs.com/bigbigtree/archive/2011/12/07/2278721.htmlhttps://blog.csdn.net/xzhh19921019/article/details/53408099https://www.osgeo.cn/gdal/doxygen/classGDALDataset.html#afec5fd0fffddbdf530cd6294caa66a原创 2021-12-10 12:26:40 · 2874 阅读 · 0 评论 -
C语言使用sqlite3.dll连接操作sqlite数据库
C语言使用sqlite3.dll操作数据库的方法。原创 2021-12-03 12:19:31 · 2467 阅读 · 0 评论 -
C++17的directory_iterator编译错误的解决办法
源代码如下:#include <iostream>#include <filesystem>using namespace std;using namespace std::filesystem;int main(int argc, char **argv){ path str("/"); if (!exists(str)) { return -1; } director原创 2021-11-08 11:55:19 · 2597 阅读 · 0 评论 -
libxml2使用xpath寻找节点
最近做项目总是有解析xml的需求,而迅速定位到所需节点然后进行读取、修改、删除操作是常有的事情,为此,我学习了xpath的用法,总结如下:首先,libxml2的官方文档被墙了,只能百度。找到一篇文章:https://www.cnblogs.com/catgatp/p/6505427.html文章里介绍的方法很实用,我拿过来修改后自己测试并调整。示例代码如下,参照着使用就行了。#include <libxml/parser.h>#include <libxml/tree.h>原创 2021-07-28 09:35:37 · 845 阅读 · 0 评论 -
使用cpp-httplib和nlohmann/json做一个能传文件的服务器和客户端
最近项目中要搭建自己的响应服务器,C++技术,能跟客户端通讯做一些功能,比如上传下载文件(文本的和二进制的,比如配置文件和应用程序的升级),比如用户登录、添加、修改等操作。自己写规约做了一个,发现很麻烦,用二进制的方法,发送端、接收端的封包操作十分繁琐。周末找到了cpp-httplib,又同时发现了nlohmann/json,发现用这两个库结合起来,就能用C++做一个类似Apache+PHP的网站服务器了!代码编写十分简单,我这里举例的是根据库里的例子修改的,客户端是根据文档编写的,测试通过的。需要原创 2021-07-25 16:24:34 · 4507 阅读 · 1 评论 -
我的vscode的C/C++配置
从一个熟悉的开发环境切换到另一个不熟悉,但已经被公认优秀的开发环境其实也特别困难。我从Sublime Text转到Visual Studio Code(vscode)从根本上说是源于C/C++开发,对于开发PHP/HTML/JavaScript/CSS语言的网站来说,我现在仍然使用Sublime Text 3做网站开发。毕竟在Windows里开发C/C++如果使用MFC开发Windows程序,或者开发Linux平台下的C/C++程序,vscode是一个简洁、高效、易用的编辑器(不编译)。写此博文时,vs原创 2021-07-08 10:26:59 · 1260 阅读 · 0 评论 -
暴力破解算法
暴力破解算法可用于如下场景:1、密码猜测2、对于罗拉模块的数据请求,当发现模块么有回应数据时,往往考虑是否模块所处位置导致信号无法到达,此时可借助其他模块作为中继来进行通讯。当然无论用于哪种场景,都需要自己实现代码,本代码只是写出了核心算法。算法描述:从1位密码开始,或者说从1个中继开始,从数组中获取每一种值,取到最后一个数据后,翻转到第一个值,增加1位,取第一个值。比如密码组合有[1,2,3,4]四个数字,密码最多4位,那么组合规律如下:123411121314…4444原创 2021-07-03 13:48:16 · 1028 阅读 · 0 评论 -
再谈Linux下的socket编程和epoll模型
之所以将这两件事情一起谈,是因为我认为掌握了这两个技术要点,运用在工作中,几乎能解决大部分我们面对的连接数几百个或者几千个的项目(嵌入式工程师往往只需要面对几十个至数百个连接)。另一方面,对socket有一个正确的认识,也有助于我们开发套接字通讯类的应用程序。首先回顾socket客户端的流程:创建TCP/IP套接字,没有什么好解释的,客户端和服务器都这样: if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {原创 2021-06-17 20:35:29 · 505 阅读 · 1 评论 -
C语言写的md5函数
网上关于C/C++的md5函数很多,我下载后包装了一个简单的。代码和测试用例如下:#ifndef MD5_H#define MD5_Htypedef struct{ unsigned int count[2]; unsigned int state[4]; unsigned char buffer[64];} MD5_CTX;#define F(x,y,z) ((x & y) | (~x & z))#define G(x,y,z) ((x & z) |原创 2020-09-19 12:01:11 · 1134 阅读 · 0 评论 -
MFC封装的base64编码解码函数
函数本就是网上下载的,经过我修改并测试通过以后,封装成C++代码了,并且使用了MFC的数据结构,懂C或C++的朋友可以拿过去稍作修改就可以用了。提醒:作为C函数,在进行base64编码时一定要给够缓冲区,base64是将8比特数据封装到6比特里,所以缓冲区大小应该为原数据长度 x 4 / 3 + 3,同理,解码的时候则是原数据长度 x 3 / 4 +4,为什么+3、+4?这是因为整除会抛弃余数,余数最大值分别为:2、3,+3、4,多了1个字节,正好给结尾的字符0准备。#include "StdAfx.h原创 2020-09-26 20:23:12 · 1025 阅读 · 0 评论