- 博客(1057)
- 收藏
- 关注
原创 【库函数】Qt中Json的操作
参考博客:https://www.cnblogs.com/ybqjymy/p/17264853.htmlhttps://www.jb51.net/article/260149.htmhttps://blog.csdn.net/cpp_learner/article/details/118421096之前介绍了许多 C++ 的 Json 第三方库,下面介绍一下 Json 在 Qt...
2023-09-13 16:06:00
338
原创 【库函数】QT 中QString字符串的操作
QString是QT提供的字符串类,相应的也就提供了很多很方便对字符串的处理方法。这里把这些对字符串的操作做一个整理和总结。1. 将一个字符串追加到另一个字符串的末尾QString str1 = "hello ";QString str2 = "world";str1.append(str2); // str1 = "hello world"str1...
2023-09-12 16:52:00
931
原创 【库函数】在什么时候使用 string_view 代替 string
前言C++17增加了std::string_view,它在很多情况会优于使用std::string 。尤其是用做函数形参的时候,使用std::string_view基本一定优于老式的const std::string&这种写法。了解std::string_view在讲述它的优越性之前,我们应该先介绍一下它。首先,它顾名思义,就是一个字符串视图,它和std::string不一样,...
2023-09-12 08:30:00
300
原创 【3rd Party】Cpp 中使用 Protobuf
前置条件:【Protoc】VS2019 (VS平台) 使用 CMake 编译安装、使用 Protobuf 库 【ToolChains】CLion(VS2019) + CMake + Vcpkg 的使用 参考博客:Protocol Buffers C++ 入门教程高效的数据压缩编码方式 ProtobufProtoBuf 的定义和描述Protocol Buffers 是一种...
2023-09-08 13:24:00
226
原创 【ToolChains】CLion(VS2019) + CMake + Vcpkg 的使用
参考博客:https://blog.51cto.com/u_15075510/4201238http://t.csdn.cn/pADDUhttps://zhuanlan.zhihu.com/p/454233496https://blog.csdn.net/weixin_43803955/article/details/123544106https://blog.songjiahao...
2023-09-05 13:21:00
1122
原创 Google C++编程规范(Google C++ Style Guide)
参考链接:Google 代码规范 C++总结Google 开源项目风格指南——中文版Google C++ Style Guide是一份不错的C++编码指南,我制作了一张比较全面的说明图,可以在短时间内快速掌握规范的重点内容。不过规范毕竟是人定的,记得活学活用。看图前别忘了阅读下面两条重要建议:保持一致也非常重要,如果你在一个文件中新加的代码和原有代码风格相去甚远的话,这就破坏了文件本身...
2023-09-03 16:46:00
622
原创 【Qt Libraries】QUrl 的基本使用方法
参考博客:https://www.cnblogs.com/liushui-sky/p/10892097.htmlhttps://www.cnblogs.com/ShineLeBlog/p/14951512.html简述: QUrl类提供了一个方便的接口使用Urls,它可以构造解析编码和未编码形式的URls。QUrl也支持国际化域名(IDNs)。1、Create ObjectQU...
2023-09-01 10:47:00
470
原创 【3rd Party】nlohmann json 基础用法
参考链接:Here什么是nlohman json ?nlohman json GitHub - nlohmann/json: JSON for Modern C++ 是一个为现代C++(C++11)设计的JSON解析库,主要特点是易于集成,仅需一个头文件,无需安装依赖易于使用,可以和STL无缝对接,使用体验近似python中的jsonMinimal ExampleCMakeL...
2023-08-31 16:46:00
259
1
原创 【Protoc】VS2019 (VS平台) 使用 CMake 编译安装、使用 Protobuf 库
背景:工作中需要使用到 protobuf,看了一些教程,感觉都不是很适合,便自己总结一些开发环境:Win 10VS2019CMake 3.24.2Protobuf 3.21.12 (Protoc 版本必须于 Protobuf 版本一致)MinGW 版本的编译在之后有空再研究。https://stackoverflow.com/questions/9243816/how-to...
2023-08-23 15:26:00
1033
原创 【Boost】boost.log 要点笔记
常用简写:namespace logging = boost::log;namespace src = boost::log::sources;namespace expr = boost::log::expressions;namespace sinks = boost::log::sinks;namespace attrs = boost::log::attributes;nam...
2023-08-22 08:37:00
213
原创 【Logging 日志库】Cpp 日志库 boost::log 以及 glog 的对比
日志能方便地诊断程序原因、统计程序运行数据,是大型软件系统必不可少的组件之一。本文将从设计上和功能上对比 C++ 语言常见的两款日志库: boost::log 和 google-glog 。设计boost::log 的设计主要有日志器( Logger )、日志核心( Logging core )、 Sink 前后端( frontend, backend )组成。日志文本以及日志环境由日志器(...
2023-08-21 16:04:00
178
原创 Wiindows下更改CMake编译器为MinGW
个人环境MinGW:使用 QT6 install 的 mingw1120_64.CMake:使用 QT6 install 的 CMake 3.24.2.第一次编译时,默认生成VS的工程文件,为了修改编译器为MinGW,在编译时,键入:cmake -G "MinGW Makefiles" -DCMAKE_CXX_FLAGES=-std=c++11同时也指定了编译器支持的编译标准为...
2023-08-17 13:14:00
141
原创 【QT】tr()的作用
函数 tr() 全名是 QObject::tr() ,被它处理的 字符串可以 使用工具提取出来翻译成其他语言, 也就是做国际化使用。只要记住,Qt 的最佳实践:如果你想让你的程序国际化的话,那么,所有用户可见的字符串都要使用 QObject::tr() !但是,为什么我们没有写 QObject::tr() ,而仅仅是 tr() 呢?原来,tr()函数是定义在 Object 里面的,所有使用...
2023-08-16 16:53:00
220
原创 【QT 学习之路】事件
事件(event)是由系统或者 Qt 本身在不同的时刻发出的。当用户按下鼠标、敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件。一些事件在对用户操作做出响应时发出,如键盘事件等;另一些事件则是由系统自动发出,如计时器事件。事件也就是我们通常说的“事件驱动(event drive)”程序设计的基础概念。事件的出现,使得程序代码不会按照原始的线性顺序执行。想想看,从最初的 C 语言开...
2023-08-16 10:49:00
54
原创 【OpenSSL】Visual Studio 2019配置OpenSSL 3.0开发环境
OpenSSL从1.0.2版本升级为3.0.3版本后,需要对代码进行重构。如果不可用的代码太多,需要重新开一个项目、重新配置开发环境。【第一步】登录http://slproweb.com/,下载Win64 OpenSSL v3.1.2安装包。【第二步】正常完成安装。【第三步】找到OpenSSL的安装目录,记录下include和lib两个文件夹的位置。【第四步】打开Visual Studi...
2023-08-09 08:26:00
602
原创 【C++第三方库】Windows下编译和使用 WebSocket++/WebSocketpp
应用场景:使用C++开发一个支持websocket协议的服务进程,可与HTML5(浏览器js文件)通信。来实现替换基于firebreath框架的跨浏览器插件开发。当前,讲述websocketpp开源库的应用。目的是为了实现C++进程,支持websocket协议。但 WebSocketpp 是一个开源库,依赖于 Boost 和 OpenSSL资源准备WebSocketpphttps...
2023-08-08 21:06:00
529
原创 【计算机网络】WebSocket 是什么原理?为什么可以实现持久连接?
一、WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连接),循环连接的不算)首先HTTP有1.1和1.0之说,也就是所谓的keep-alive,把多个HTTP请求合并为一个,但是 Websocket 其实是一个新协议,跟HTTP协议基本没有关系,只是为了兼容现有浏览器的握手规范而已,也就是说它是HTTP协议上的一种补充...
2023-08-08 16:34:00
74
原创 【MFC】CListCtrl 如何设置单元格颜色?
CListCtrl默认可设置的内容很少,如单元格颜色默认无法设置。若想设置单元格颜色,需要对CListCtrl进行拓展,已有老外为我们写好demo,这里对其中原理、设置方法进行一个解析。其原理是:设置CListCtrl控件的OwerDraw属性为true,然后使用GDI画图函数进行各种自定义绘制。拓展的类为CColorListCtrl,必需引入的代码:ColorListCtrl.zip(4...
2023-08-07 16:50:00
825
原创 【TCP】学习笔记:application/octet-stream
当浏览器在请求资源时,会通过http返回头中的content-type决定如何显示/处理将要加载的数据,如果这个类型浏览器能够支持阅览,浏览器就会直接展示该资源,比如png、jpeg、video等格式。在某些下载文件的场景中,服务端可能会返回文件流,并在返回头中带上Content-Type: application/octet-stream,告知浏览器这是一个字节流,浏览器处理字节流的默认方式就...
2023-07-31 11:00:00
881
原创 【LibCurl】HomeBrew 安装 LibCurl & CMake 配置
LibCurl 在官网中明确指出支持 HomeBrew 进行安装。那么在 macOS 端的安装就不会想 Win 下需要根据版本进行编译了,方便许多brew install curl# 安装完成后会提示 curl 在 macOS 库文件和依赖文件的安装路径CMake 配置CMake 是一种跨平台的构建工具,可以帮助我们编译、配置和生成应用程序的 Makefile 或者 Visual ...
2023-07-29 13:41:00
175
原创 【MFC】CSingleLock的使用
转载文章:CSingleLock的使用// 先看看其代码:// 声明class CSingleLock{ // Constructors public: CSingleLock(CSyncObject* pObject, BOOL bInitialLock = FALSE); // Operations public: BOOL Lock(DWORD dwTim...
2023-07-28 12:38:00
261
原创 【Boost】Windows 下个人在配置 Boost 踩到的坑以及解决方案
要编译的 Boost 版本:1.82.0假设 Boost 的根目录为 ${boost_root}$如果不想编译可以使用博主编译后的Boost:https://pan.baidu.com/s/1s2fLoEgJX3540rk_WIkNOQ?pwd=yyds一、关于 VC14.2 编译https://www.boost.org/ 下载 boost 源码 boost_1_82_0.zi...
2023-07-26 09:25:00
384
原创 CMakeLists.txt的工程转成.sln
直接说正确的操作(结合之前的笔记)创建 Build 目录mkdir build && cd build执行 cmake 命令,根据 CMakeLists.txt 生成 .sln 工程;目标 Visual Studio 2019 x64 的 .sln这步比较坑! cmake 后面更改了参数,就必须把之前的 cmake 生成的文件删除掉,否则报错(CMAKE : ...
2023-07-26 08:14:00
1056
原创 【Boost】CMake中引用Boost库
概述在macOS开发时常常使用Boost库,若项目使用CMake进行组织管理和编译,需要掌握在CMake中实现Boost库的引用的基本语法。本片博客结合自己在实际使用过程中的经验进行总结,以期回顾和进行阶段总结。CMakeLists.txt编写find_package通过调用find_package可以找到头文件和所需要的库文件或者是一个CMake打包配置文件。find_package...
2023-07-24 15:08:00
1166
原创 【Boost】Windows端使用 MSVC14.2 编译 Boost 并在 CMake 项目中使用
Write 2023.7.24关于 boost 在 Windows 下的使用 gcc 安装与 CLion 的配置, 能够查到的英文资料都比较少, 踩过坑后记录一下。MinGW 安装 BoostBoost Download:https://www.boost.org/users/download/下载并解压在某个没有中文路径下的目录中在开始编译操作之前请把 gcc 添加至环境变量(这...
2023-07-24 14:43:00
193
原创 Make、Makefile、Cmake、QMake 的区别
本博文的简述or解决问题?make makefile cmake qmake都是什么,有什么区别?查了一下好像是编译用的,既然是编译为什么我们不用g++、 javac 来编译呢?我猜答案是方便一点,但是具体方便在哪呢,请明示。还有它们之间如果有相似性的话,也帮我比较一下吧,谢谢各位大神。觉得写的比较好,所以在这里搬运过来了答一(比较写的好):作者:辉常哥链接:https://www....
2023-07-21 08:25:00
32
原创 【LibCurl】C++使用libcurl实现HTTP POST和GET、PUT
libcurl简介libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传, HTTP基本表单上传,代理,cookies,和用户认证libcurl的官网: http://curl.haxx.se/库...
2023-07-18 15:44:00
1393
原创 【CJsonObject】C++ JSON 解析器使用教程
能选封装的尽量不使用底层的一、CJsonObject 简介CJsonObject 是 Bwar 基于 cJSON 全新开发一个 C++ 版的 JSON 库。CJsonObject 的最大优势是轻量、简单好用,开发效率极高,尤其对多层嵌套 json 的读取和生成、修改极为方便。CJsonObject比cJSON简单易用得多,且只要不是有意不释放内存就不会发生内存泄漏。用CJsonOb...
2023-07-18 14:35:00
521
原创 【cJSON】轻量级的C语言JSON解析器
C++ 进阶版:【CJsonObject】C++ JSON 解析器使用教程1. JSON与cJSONJSON —— 轻量级的数据格式JSON 全称 JavaScript Object Notation,即 JS对象简谱,是一种轻量级的数据格式。它采用完全独立于编程语言的文本格式来存储和表示数据,语法简洁、层次结构清晰,易于人阅读和编写,同时也易于机器解析和生成,有效的提升了网络传输效...
2023-07-17 16:50:00
153
原创 【C++】使用 curl 库配置 HTTP 的 Post/Get 请求响应数据(封装一个简单类)
2023.7.18 Update: 【LibCurl】C++使用libcurl实现HTTP POST和GET 要想使用 LibCURL 库,首先需配置 CURL 库参考链接:【C++开源库】Windows 下编译 libcurl 库// 测试代码#include <iostream>using namespace std;;int main(){ curl_...
2023-07-17 16:43:00
2040
原创 【C++库函数】stringstream-类型转换&&字符分割
继续填坑٩(•̤̀ᵕ•̤́๑),这次是 stringstream的内容,最初是看到它可以把字符串直接输出成int类型,惊了,但是一直不是很懂。在网上查了很多资料,才终于差不多理解。stringstream 是C++提供的一个字符串流,和 cin,cout 输入输出流类似,只不过它不是从从键盘或文件输入,也不是输出到屏幕或文件中,而是接受一个对象的输入,或把缓存区的内容输出到一个对象中。具体可以用...
2023-07-17 13:00:00
191
原创 工程开发 | CMake工程目录结构和多线程
CMake工程目录结构lib: 生成的库文件src: 源文件(.cpp .cc)include: 头文件(.h .hpp)build: 一般在这个文件夹下执行cmake ..(..之前有一个空格,表示你要使用的CMakeLists.txt文件在当前的上层路径),生成的Makefile文件也在这个路径下。bin: 一般放生成的可执行文件CMakeLists.txt: cmake的配...
2023-07-14 09:17:00
226
原创 Socket | 大小端问题和网络字节序转换函数
不同 CPU 中,4 字节整数 1 在内存空间的存储方式是不同的。4 字节整数 1 可用 2 进制表示如下:00000000 00000000 00000000 00000001有些 CPU 以上面的顺序存储到内存,另外一些 CPU 则以倒序存储,如下所示:00000001 00000000 00000000 00000000若不考虑这些就收发数据会发生问题,因为保存顺序的不同意味着对接...
2023-07-13 16:17:00
410
原创 【C++开源库】Windows 下编译 libcurl 库
亲测可用: https://codeantenna.com/a/pJaN3omqjpWhat is libcurl ?libcurl 是一个跨平台的网络协议库,支持 http, https, ftp, gopher, telnet, dict, file, 和 ldap 协议。libcurl 同样支持 HTTPS 证书授权,HTTP POST, HTTP PUT, FTP 上传, HTT...
2023-07-12 15:00:00
252
原创 开发 | Git 提交规范
以下是 \(commit\) 提交规范,主要是在提交代码时标识本次提交的属性feat: 新功能(feature)fix: 修补bugdocs: 文档(documentation)style: 格式(不影响代码运行的变动)refactor: 重构(即不是新增功能,也不是修改bug的代码变动)chore: 构建过程或辅助工具的变动revert: 撤销,版本回退perf: 性能优化t...
2023-07-12 14:33:00
24
原创 Qt 的Cmake方式如何创建资源文件和添加类
CLion(误,QT Creator) 添加资源文件时选择Qt 然后选择Qt Resource File 单击choose,然后给你的资源文件输入一个名字比如res单击下一步,然后完成,保存这时候工程和上面添加类是一样的,看不到添加的资源文件,还是要手动到CMakeList.txt文件在里面手动输入res.qrc然后单击X关掉CMakeList.txt,他会询问要保存吗,点击保存。类...
2023-05-22 21:40:00
385
原创 Mac 配置 OpenCV C++ 版本
今天紀錄一下如何在 Mac 上安裝 OpenCV for C++ 開發環境使用 Brew 安装,pkgconfig 检测,2023.5.17Mac x86 ( Intel ) , Mac M1 ( Apple silicon ) 和 Ubuntu 也適用此筆記用 OpenCV 4.7.0_4 版本做範例1. 安装 cmake 与 pkg-config如果您的Mac沒有 cmake,...
2023-05-17 17:48:00
131
原创 AStyle - Clion中配置代码格式化工具
安装 (OSX平台)brew install astylebrew list astyleCLion 配置1、下载插件File Watchers2、配置插件File Watchers:按照图中一摸一样填写即可Name:用户自己取个名字File type:选C/C++Scope:选择Open FilesProgram:找到目录并选择上面 brew list astyle 的路径...
2023-05-09 22:07:00
291
原创 CMake 入门实战
CMake 入门实战本仓库是 CMake 入门实战 的源代码。为了方便 github pages 无法正常阅读的朋友,下面也附带上正文。但为了您更好的阅读体验,不妨前往原博客阅读:https://hahack.com/codes/cmake 。什么是 CMakeAll problems in computer science can be solved by another le...
2023-05-02 21:49:00
27
原创 通过 Homebrew 在 Mac OS X 上安装和配置 Redis
通过使用 Homebrew,可以大大降低在 Mac OS X 上设置和配置开发环境的成本。让我们安装 Redis。$ brew install redis安装后,我们将看到一些有关配置注意事项的通知。 离开它并继续关注本文中的一些任务。开机自启动 Redis$ ln -sfv /usr/local/Cellar/redis/7.0.10/*.plist ~/Library/Laun...
2023-04-06 15:58:00
80
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人