C++
文章平均质量分 55
实际开发中遇到的问题解决办法和经验总结
苏克贝塔
书上说,天下没有不散的宴席,但书上又说,天涯何处不相逢!
展开
-
c++字符串实现join方法,使用模板
主要记录下类成员函数,申明为模板函数的写法。c++字符串实现join方法,使用模板。注意定义迭代器时,前面需要加上。原创 2024-07-16 15:07:44 · 310 阅读 · 0 评论 -
在vs中开发QT时使能控制台输出的方法
在vs中开发QT时使能控制台输出的方法用VS开发QT应用程序时出现需要看调试信息,我们第一想到的是qDebug(),但是如果是在release环境下,或者不能直接看到qDebug控制台的情况下,该怎么看到调试信息呢?我们想到系统标准输出,标准输入和标准错误,分别对应stdout, stdin, stderr。我们可以用fprintf(stderr," stderr test\n");fprintf(stdout," stderr test\n");方法一解决方法: 工程->属性->原创 2021-11-29 11:35:01 · 2634 阅读 · 0 评论 -
手动实现std::shared_ptr源码
一、Shared_ptr 定义从c++11开始,std给我们提供4中智能指针auto_ptr、unique_ptr、shared_ptr 和 weak_ptr,其中最常用的为unique_ptr、shared_ptr,今天我们看下如何用代码实现shared_ptr的基本功能。首先share_ptr也是一个类。可以实现多个指针指向同一对象(引用计数),有以下3个特性。每使用一次,内部引用计数加1;每析构一次,内部引用计数减1,;引用计数减为0时,自动释放原生指针所指向的内存。二原创 2021-08-13 16:58:36 · 1200 阅读 · 5 评论 -
C++11函数模板function,bind使用
一、定义std::function是函数模板类(是一个类);std::bind是函数模板(是一个函数);类模板 std::function 是通用多态函数封装器。std::function 的实例能存储、复制及调用任何可调用 (Callable) 目标,其中包括:函数、 lambda 表达式、 bind 表达式或其他函数对象,还有指向成员函数指针和指向数据成员指针。它也是对 C++ 中现有的可调用实体的一种类型安全的包裹(相对来说,函数指针的调用不是类型安全的)二、std::function,原创 2021-08-06 16:22:41 · 416 阅读 · 0 评论 -
C++11智能指针unique_ptr用法介绍
一、概述C++ 标准模板库 STL(Standard Template Library) 一共给我们提供了四种智能指针:auto_ptr、unique_ptr、shared_ptr 和 weak_ptr,其中 auto_ptr 是 C++98 提出的,C++11 已将其摒弃,并提出了 unique_ptr 替代 auto_ptr。虽然 auto_ptr 已被摒弃,但在实际项目中仍可使用,但建议使用更加安全的 unique_ptr,后文会详细叙述。shared_ptr 和 weak_ptr 则是 C+11原创 2021-08-06 00:08:32 · 476 阅读 · 0 评论 -
C++11智能指针shared_ptr用法介绍
一、概述C++ 标准模板库 STL(Standard Template Library) 一共给我们提供了四种智能指针:auto_ptr、unique_ptr、shared_ptr 和 weak_ptr,其中 auto_ptr 是 C++98 提出的,C++11 已将其摒弃,并提出了 unique_ptr 替代 auto_ptr。虽然 auto_ptr 已被摒弃,但在实际项目中仍可使用,但建议使用更加安全的 unique_ptr,后文会详细叙述。shared_ptr 和 weak_ptr 则是 C+11原创 2021-08-05 18:03:46 · 399 阅读 · 0 评论 -
Hp-socket高性能网络库九--linux下编译和安装
Hp-socket高性能网络库九--linux下编译和安装原创 2021-04-01 16:39:15 · 1008 阅读 · 0 评论 -
Hp-socket高性能网络库八--udp组件和参数配置
Hp-socket高性能网络库八--udp组件和参数配置原创 2021-04-01 16:38:42 · 949 阅读 · 0 评论 -
Hp-socket高性能网络库七--http组件Cookie管理
Hp-socket高性能网络库七--http组件Cookie管理原创 2021-04-01 16:37:34 · 389 阅读 · 0 评论 -
Hp-socket高性能网络库六--http组件和监听器事件
Hp-socket高性能网络库六--http组件和监听器事件原创 2021-04-01 16:36:50 · 480 阅读 · 0 评论 -
Hp-socket高性能网络库四--ssl组件运行环境、握手介绍
Hp-socket高性能网络库四–ssl组件和运行环境原创 2021-04-01 16:34:28 · 1639 阅读 · 0 评论 -
Hp-socket高性能网络库三--tcp组件pack接收模型
Hp-socket高性能网络库二–tcp组件pack接收模型原创 2021-04-01 16:33:58 · 3022 阅读 · 0 评论 -
Hp-Socket高性能网络库一--tcp组件push接收模型
一、tcp传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。二、tcp网络通信程序中需要考虑的问题一般tcp形式网络通信程序中都会有以下问题需要考虑:1.收发缓冲区的设计2.阻塞、非阻塞socket的选取3.select/IOCP完成端口模型(win)4.断包,粘包处理5.心跳包设计6.客户端短信重连7.清除无效的死链8.shutdown和优雅关闭9.等等。。。本篇我们主原创 2021-04-01 15:01:28 · 2296 阅读 · 1 评论 -
Hp-socket高性能网络库二--tcp组件pull接收模型
本篇vs2019开发环境,纯C语言编写,对新手非常友好。二、开发步骤2.1 新建项目工程打开vs2019新建c++空项目TcpServer_push,我们选取hp-socket最原生的push接收模型,对push、pull、pack不清楚的可以查看上一篇《Hp-Socket高性能网络库介绍一》,里面有详细描述三者的区别。2.2添加hp-socket头文件和lib,dll文件到项目中2.2.1添加头文件复制ldcsaa-HP-Socket-master\HP-Socket\Windows\Inc原创 2021-04-01 09:32:30 · 1906 阅读 · 1 评论 -
Hp-Socket高性能网络库介绍零--整体结构
一、目录结构介绍--DOC:目录下是官方提供的文档,包括Development Guide--DotNet:.net项目的开发步骤,可以直接通过nuget部署HPsocket.net--Linux:Linux的工程,包括android build--MacOS:mac环境的开发步骤--Windows:Windows的工程,最常用的开发环境--Bin:编译好的dll和lib--Demo:官方提供的使用示例,包括PUSH模型示例、 PULL模型示例、 PACK模型示例、 性能测.原创 2021-03-31 18:26:00 · 6858 阅读 · 4 评论 -
MQTT简介及Windows下开发入门
1. MQTT简介MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和致动器(比如通过Twitter让房屋联网)的通信协议。2. MQTT应用IBM和St. Jude医疗中心通过MQTT开发了一套Merlin系统,该系统使用了用于家庭保健的传感器。St. Jude医疗中心设计了一个叫做Merlin@home的心原创 2020-09-21 10:39:42 · 1416 阅读 · 0 评论 -
C++ STL标准库中sort,erase,remove_if函数的使用
C++STL中sort函数1.sort函数包含在头文件为#include<algorithm>的c++标准库中,调用标准库里的排序方法可以实现对数据的排序。2.sort函数的模板有三个参数:void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);(1)第一个参数first:是要排序的数组的起始地址。(2)第二个参数last:是结束的地址(最后一个数据的后一个数据的地址)原创 2020-09-15 11:37:25 · 842 阅读 · 0 评论 -
Intel hex文件解析 附代码
Intel HEX由任意数量的十六进制记录组成。每个记录包含5个域,它们按以下格式排列::(冒号)每个Intel HEX记录都由冒号开头; LL是数据长度域,它代表记录当中数据字节(D...D)的数量; aaaa是地址域,它代表记录当中数据的起始地址; TT是代表HEX记录类型的域,它可能是以下数据当中的一个:00 –数据记录(Data Record) 01 – 文件结束记录(End of FileRecord) 0...原创 2020-09-08 11:24:24 · 1209 阅读 · 0 评论 -
C++跨平台通过宏定义判断当前操作系统windows,linux和编译器
int main(){ //系统宏#ifdef __ANDROID__ string port("/dev/ttyUSB1");#elif __linux__ string port("/dev/ttyUSB0");#elif _WIN32 string port("Com3");#endif //编译器宏#ifdef _MSC_VER cout << "hello MSVC" << endl;#elif __GNUC__ cout << .原创 2020-09-04 17:58:03 · 9441 阅读 · 1 评论 -
C++ 11中匿名函数(lambda表达式)说明及使用场景
[] //未定义变量.试图在Lambda内使用任何外部变量都是错误的.[x, &y] //x 按值捕获, y 按引用捕获.[&] //用到的任何外部变量都隐式按引用捕获[=] //用到的任何外部变量都隐式按值捕获[&, x] //x显式地按值捕获. 其它变量按引用捕获[=, &z] //z按引用捕获. 其它变量按值捕获原创 2020-08-11 16:13:48 · 1785 阅读 · 0 评论 -
智能指针make_unique初始化数组的3种方法
智能指针make_unique初始化数组的两种方法://方法1std::unique_ptr<int[]> ptr1{ new int[5]{1,2,3,4,5} };//方法2auto ptr2 = std::make_unique<std::array<int, 5>>(std::array<int, 5>{1, 2, 3, 4, 5});但还是建议使用vector来表示数组,如下://方法3shared_ptr<vecto原创 2020-06-21 09:19:55 · 10282 阅读 · 0 评论 -
libqrencode vs2010环境下二维码生成库编译及使用
Git地址:https://github.com/fukuchi/libqrencode官网:https://fukuchi.org/works/qrencode/index.html.en平台:Win10+VS2010+MFC 对话框步骤:VS2010里新建一个项目QRTest,对话框模式,选择在共享DLL中使用MFC 在解决方案资源管理器里右键解决方案,添加–新建项目–Win32项目,取名libQR–选择静态库,同时取消预编译,结果如图 选出libqrencode里所有.h .c原创 2020-05-31 06:18:38 · 1080 阅读 · 0 评论 -
vs2019配置boost1.7.0
1.如果选用vs2019开发环境,建议用boost1.7或以上版本,网上有说低于1.7.0的版本可能在vs2019中支持不完善,编译或运行时发生不可预料的bug,但我没有试过。2.下载解压boost1.73.运行路径下的,大概意思初始化个安装环境,双击会3s左右自动退出。C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build4.运行批处理bootstrap.batcd F:\b原创 2020-05-23 14:41:49 · 1605 阅读 · 2 评论 -
vs平台工具集介绍,vc6~vs2019各IDE对应的工具集版本
什么是平台工具集:平台工具集其实是MSBuild其目录所在C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0。只有安装了对应的vs版本才能选择对应的选项。VS从2010之后开始支持使用之前的版本进行编译,可以在工程属性->常规中进行设置。VS各版本对应的工具集版本号如下:-Visual Studio 2019: V142-Visual Studio 2017: V141-Visual Studio 2015: V140-Visu原创 2020-05-23 14:23:39 · 18784 阅读 · 11 评论 -
win10系统下vs2010+opencv2.4.9配置教程并实现打开关闭摄像头,实现纸张识别算法
0.介绍opencv之前先了解下visual studio和opencv之间的版本对应关系VS版本与VC版本对应关系Visual Studio 6 : vc6Visual Studio 2003 : vc7Visual Studio 2005 : vc8Visual Studio 2008 : vc9Visual Studio 2010 : vc10Visual Stu...原创 2020-03-26 11:30:54 · 732 阅读 · 0 评论 -
vs2010下配置HPSocket教程,详细截图附入门demo源码
HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 A...原创 2019-07-05 16:11:47 · 5671 阅读 · 0 评论 -
Boost库进程通信
1.Boost.Interprocess和Boost.Asio库1)Boost.Interprocess库,它包括众多的类,这些类提供了操作系统相关的进程间通讯接口的抽象层。2)如果同一台计算机不同进程之间通信,虽然也可考虑选择Boost.Asio,但是性能方面不如Boost.Interprocess,因为Boost.Interprocess是使用操作系统的功能优化了同一台计算机不同进程...原创 2019-06-18 09:18:00 · 1176 阅读 · 0 评论 -
Boost库容器
1.Boost.Array1)boost.array和std.vector基本上有相同的操作,只不过boost::array是定长的。2)boost.array可以用=直接赋值#include "pch.h"#include <iostream>#include <boost/array.hpp>#include <boost/shared_ptr...原创 2019-06-17 16:38:20 · 336 阅读 · 0 评论 -
Boost库事件处理
1.Boost.Signals事件,最容易想到的应用场景是在GUI开发中,点击按钮,与之相关联的功能被执行。Boost.Signals可以将一个以上的事件处理器与一个信号关联(和.net 的事件委托差不多)。因此,Boost.Signals可以更好的支持事件驱动的开发。1)connect函数,将信号和事件处理函数相关联。2)要释放某个函数与信号的关联,可以用disconnect函数。...原创 2019-06-17 16:35:58 · 358 阅读 · 0 评论 -
Boost库异步IO
1.Boost.Asio是异步输入输出的核心。异步数据处理就是指,任务触发后不需要等待它们完成。2.异步典型的例子就是网络应用。网络程序中有很多发送接收的函数,这些函数一般分为同步和异步,同步就是发送数据后,需要阻塞等待发送函数是否成功,一般返回成功/失败/超时。如果遇到网络情况不好的时候,这种程序设计效率肯定不高。而异步就是将发送数据分为两步:第一步是开始数据传输,不论成功或是错误,第二步...原创 2019-06-17 16:34:52 · 879 阅读 · 0 评论 -
Boost库智能指针
背景:1998年修订的第一版C++标准只提供了一种智能指针:std::auto_ptr。 它基本上就像是个普通的指针: 通过地址来访问一个动态分配的对象。std::auto_ptr之所以被看作是智能指针,是因为它会在析构的时候调用delete操作符来自动释放所包含的对象。 当然这要求在初始化的时候,传给它一个由new操作符返回的对象的地址。 既然std::auto_ptr的析...原创 2019-06-17 16:25:44 · 226 阅读 · 0 评论