C++
文章平均质量分 72
LL596214569
一个有点强迫症的编程学习者。
展开
-
C++浮点数format时的舍入问题
也就是IEEE 754的标准规定了“四舍六入五成双”这种取整方式,而像是IEEE 754这类标准我以前从没有仔细了解过,遇到也只是简单扫一眼就过去了,所以才会遇到今天这个问题而不理解;我以为按照四舍五入会输出 2 2 3 3。这个标准我也还在学习了解中,就不介绍了;原创 2024-04-30 10:25:47 · 474 阅读 · 0 评论 -
基于Crow的C++的WebSocket服务器
Crow是一个用C++编写的WebSocket框架,旨在提供简单易用的API和高性能。它最初是由Mozilla开发的,现在已经成为了一个独立的开源项目。它使用了类似于Python的Flask的路由,这使得它易于使用,同时其处理速度也很快。原创 2023-08-09 18:51:30 · 2321 阅读 · 0 评论 -
配置CMAKE编译环境:VSCODE + MinGW
VSCODE使用gcc编译CMake工程配置原创 2023-02-11 15:14:25 · 2754 阅读 · 0 评论 -
SimpleAmqpClient AmqpClient::Channel::ptr_t
SimpleAmqbClient::Channel 接口声明。原创 2023-02-02 09:51:11 · 454 阅读 · 0 评论 -
C++构造函数使用memset初始化可能导致的问题
今天在写代码的时候突然遇到一个中断问题,但是光看代码根本发现不了错误,代码大概类似于:typedef struct MemsetTest{ int year; map<int,string> m_map; MemsetTest() { memset(this , 0 , sizeof(MemsetTest)); }}MemsetTest;int Main(){ MemsetTest tTest; tTest.year = 2020; tTest.m原创 2020-06-02 19:34:22 · 1271 阅读 · 0 评论 -
SFML基础
原文地址:https://www.cnblogs.com/karl07/p/10285692.html(1) 窗口和交互创建一个新窗口:sf::RenderWindow window(sf::VideoMode(500,500),"new window");但是光创建一个窗口并不能显示还要加一个循环 while (window.isOpen()){ ...转载 2020-01-05 16:38:14 · 4939 阅读 · 0 评论 -
SFML初学-俄罗斯方块实现
偶然看到大神使用 SFML 制作游戏,简单学习了一下这个库的使用并且仿照YouTube上大神的思路做了一个俄罗斯方块,目前只实现了出现方块、消除方块的功能,随着慢慢学习一点点继续修改吧;资源:源码:/****************************************************************************** Copyr...原创 2020-01-05 16:34:02 · 2240 阅读 · 0 评论 -
_purecall & _get_purecall_handler & _set_purecall_handler
原文:https://docs.microsoft.com/zh-cn/cpp/c-runtime-library/reference/purecall?view=vs-2019一、_purecall默认纯虚拟函数调用错误处理程序。当调用纯虚拟成员函数时,编译器生成调用此函数的代码。语法C复制extern "C" int __cdecl _purecall();备注...翻译 2020-04-23 16:33:14 · 1228 阅读 · 0 评论 -
C++函数指针在回调函数中的使用
一、函数指针的定义函数指针是指向函数的指针变量。 因此“函数指针”本身首先应是指针变量,只不过该指针指向的是函数,其实与用指针指向变量一样。在代码编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向这个函数地址的指针变量后,可用该指针变量找到函数的地址进而调用函数。代码实例:需要注意的数定义函数指针时的括号不可以省略,例如://pfadd 是一个指向函...原创 2020-04-21 20:47:26 · 1062 阅读 · 0 评论 -
C++中的using关键字
using一直都是关键词,但是C++11对其赋予了新的功能。using在C++11之前主要用于名字空间、类型、函数与对象的引入,实际上是去除作用域的限制。常用如:using namespace std; //引用命名空间using std::iostream; //引用类型using std::to_string; //引用函数using std::cout;//引用对象...原创 2020-04-19 15:02:22 · 1235 阅读 · 0 评论 -
读写锁的递归死锁问题
多线程中不可避免的会用到锁,进一步也会接触到读写锁的存在;读写锁与互斥量类似,但读写锁允许更高的并行性。其特性为:写独占,读共享;读写锁非常适合于对数据结构读的次数远大于写的情况,合理运用可以有效地对锁降级,提高程序效率;最近在程序中遇到一个死锁问题,耽误了我将近一整天时间,最后发现是由于读写锁的递归使用导致的死锁问题,读写锁的递归导致死锁其实早在说明中就提到了,可惜当初看到时没能理解;...原创 2020-04-01 18:55:25 · 1849 阅读 · 0 评论 -
Protobuf3语法详解
原文地址:https://www.cnblogs.com/tohxyblog/p/8974763.html参考文献:https://developers.google.com/protocol-buffers/docs/proto3?hl=zh-cn定义一个消息类型先来看一个非常简单的例子。假设你想定义一个“搜索请求”的消息格式,每一个请求含有一个查询字符串、你感兴趣的查询结果所...转载 2020-02-03 10:35:35 · 758 阅读 · 0 评论 -
C++中内存泄漏的检测
原文地址:https://www.cnblogs.com/herenzhiming/articles/5292058.html首先我们需要知道程序有没有内存泄露,然后定位到底是哪行代码出现内存泄露了,这样才能将其修复。最简单的方法当然是借助于专业的检测工具,比较有名如BoundsCheck,功能非常强大,相信做C++开发的人都离不开它。此外就是不使用任何工具,而是自己来实现对内存泄露的监控,分如下...转载 2018-04-25 16:43:58 · 235 阅读 · 0 评论 -
C++ Primer 第五版第七章习题答案
书籍版本:2019年9月第一版;王刚 杨巨峰译;电子工业出版社编译器 : win10 && VS20157.1CSales_data头文件#pragma once#include <string>using namespace std;class CSales_data{public: CSales_data(); ~CSales_d...原创 2018-11-29 21:22:41 · 1272 阅读 · 0 评论 -
【C++】预编译、编译、汇编、链接
原文地址:https://blog.csdn.net/weixin_40740059/article/details/84075653Windows中以2:2划分内核、用户空间,Linux中以1:3划分内核、用户空间。 在text段中,只有普通局部变量是指令 int gdata1 = 10; //.data 已初始化且初始化不为零的数据int gdata2 = 0; //.b...转载 2018-11-28 14:36:03 · 504 阅读 · 0 评论 -
C++ Primer 第五版第九章习题答案
书籍版本:2019年9月第一版;王刚 杨巨峰译;电子工业出版社编译器 : win10 && VS20159.1a. list因为可能会在容器中间插入元素b.deque因为只在容器头尾操作c. vector因为是未知数量,还需要排序9.2#include "stdafx.h"#include <iostream>#include &l...原创 2018-12-27 21:07:33 · 832 阅读 · 1 评论 -
constexpr关键字
原文地址:http://towriting.com/blog/2013/09/17/constexpr/C++11有一些这样的改善,这种改善保证写出的代码比以往任何时候的执行效率都要好。这种改善之一就是生成常量表达式,允许程序利用编译时的计算能力。假如你熟悉模板元编程,你将发现constexpr使这一切变得更加简单。假如你不知道模板元编程,也没什么。constexpr使我们很容易利用上编译时编...转载 2018-12-22 19:55:03 · 910 阅读 · 0 评论 -
C++使用jsoncpp读取json文件
我用的是VS2015,相关代码与资源https://download.csdn.net/download/ll596214569/10870532首先,建立一个文件夹用来存放整个工程以及jsoncpp的代码和json文件其中jsoncpp-src-0.5.0 是我下好的jsoncpp的源码,jsonpractice是我建来测试的工程,bookinfo.json是我写的用来测试的j...原创 2018-12-23 13:37:14 · 10613 阅读 · 3 评论 -
C++ Primer 第五版第八章习题答案
书籍版本:2019年9月第一版;王刚 杨巨峰译;电子工业出版社编译器 : win10 && VS20158.1#include "stdafx.h"#include <iostream>#include <string>using namespace std;istream& streamFunc(istream&am...原创 2018-12-23 17:44:00 · 1565 阅读 · 0 评论 -
C++ Primer 第五版第十章习题答案
书籍版本:2019年9月第一版;王刚 杨巨峰译;电子工业出版社编译器 : win10 && VS201510.1#include "stdafx.h"#include <iostream>#include <string>#include <vector>#include <list>using namesp...原创 2019-01-20 18:07:51 · 726 阅读 · 0 评论 -
MFC线程的使用
一、创建线程 线程内核对象就是一个包含了线程状态信息的数据结构。每次对CreateThread 的成功调用,系统都会在内部为其分配一个内核对象。创建线程方法:HANDLE WINAPI CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, // 线程安全属性 SIZE_T dwStac...原创 2019-01-16 20:36:12 · 2300 阅读 · 0 评论 -
C++事件SetEvent,ResetEvent的使用
一、概念创建事件:HANDLE CreateEvent( LPSECURITY_ATTRIBUTES lpEventAttributes, // SECURITY_ATTRIBUTES结构指针,可为NULL BOOL bManualReset, // 手动/自动 // TRUE:表示手动,在WaitFo...原创 2019-04-09 22:13:15 · 10928 阅读 · 7 评论 -
类中成员变量的创建与回收顺序问题
直接上代码,一共三个类:#pragma onceclass CVar{public: CVar(void); CVar(int nNum); ~CVar();private: int m_nNum;};#include "stdafx.h"#include "Var.h"CVar::CVar(){ cout << "空var" <&l...原创 2019-07-21 22:06:14 · 891 阅读 · 0 评论 -
C++中的#,##,和"
原文地址:https://blog.csdn.net/mzlogin/article/details/40957939本文主页链接:C++中的#,##,和"想要灵活应用宏,离不开#和##。"在学习#和##之前,先来看一个关于"的例子:#include <stdio.h>#include <string.h>int main(){ c...转载 2019-08-08 18:57:54 · 1480 阅读 · 0 评论 -
C++中的map
一、map的概念map是 关键字-值 对的集合,通常被称为关联数组。map与数组很相似,对于数组来说,一个下标对应的就是一个值,map是一个键对应一个值,而这个键不需要为数字类型,甚至map的键还可以为一个map,当然其对应的值也可以为map,就像map<map<int, string>, map<string, int>> mapStrAndInt...原创 2018-11-18 15:03:47 · 1027 阅读 · 0 评论 -
为MFC工程添加一个控制台
在MFC工程里有时想要输出一些数据,可以用TRACE之类的,也可以写日志,还可以为工程添加一个控制台直接输出到控制台里,这样可以很方便的查阅输出的信息。效果就是这样的,在程序生成时创建一个控制台,在程序关闭时会随之销毁,发布程序时只要把对应的代码注释掉就好了。具体的操作是在你想要创建控制台的类的创建方法里例如OnCreate、OnInit之类的,添加 // 添加控制台 ...原创 2018-11-13 21:05:13 · 804 阅读 · 0 评论 -
XML文件在C++中的使用
今天做的任务需要我把一种类似树的数据存储起来并读取,最开始想要使用ini文件,但是一方面由于Ini文件主要用来保存配置,用它来存储大量数据感觉不太好。。。而且我要存储的数据结构是多层的多叉树,用ini存储很难定义结构,最后还是决定使用XML。一、XML文件结构XML文件的结构性内容,包括节点关系以及属性内容等等。元素是组成XML的最基本的单位,它由开始标记,属性和结束标记组成。就是一...原创 2018-11-13 20:52:35 · 2301 阅读 · 2 评论 -
MFC中的模态对话框与非模态对话框
原文地址:https://www.cnblogs.com/luo-peng/p/6013439.html 模态对话框创建:MyDialog mydlg;mydlg.DoModal()当前只能运行此模态对话框,且停止主窗口的运行,直到模态对话框退出,才允许主窗口运行。模态对话框的关闭顺序:OnClose:按关闭符号X后,响应WM_CLOSE消息OnKillFocus:...转载 2018-07-24 21:04:47 · 361 阅读 · 0 评论 -
DestroyWindow
原文地址:http://www.cnblogs.com/mazhen/archive/2012/01/15/2323180.html考虑单窗口情况:假设自己通过new创建了一个窗口对象pWnd,然后pWnd->Create。则销毁窗口的调用次序: 1. 手工调用pWnd->DestroyWindow();2. DestroyWindow会发送WM...转载 2018-07-18 21:27:56 · 985 阅读 · 0 评论 -
WaitForSingleObject
在多线程的情况下,有时候我们会希望等待某一线程完成了再继续做其他事情,要实现这个目的,可以使用Windows API函数WaitForSingleObject,或者WaitForMultipleObjects。这两个函数都会等待Object被标为有信号(signaled)时才返回的。那么,信号是什么呢?首先我们可以假设这里存在一个文件和两个线程,我们规定这个文件同一时刻只能被一个线程所...原创 2018-07-17 22:23:28 · 40586 阅读 · 9 评论 -
提高C++代码质量学习(一)
1.不要让main函数返回void关于main函数,在最新的 C99 标准中,只有以下两种定义方式是正确的: int main( void ) int main( int argc, char *argv[] ) 当然,在有些编译器下,void main() 也是可以通过编译的,但 C99 和 C++98 规定编译器要自动在生成的目标文件中加入”return 0;”, 表示程序正常退出.写程序好的...原创 2018-07-02 21:04:54 · 833 阅读 · 0 评论 -
VS2008遇到的error R6034,程序清单问题
今天在更新了代码之后,编译完成调试运行时突然弹出了一个debug error,R6034,代码是没有问题,但是由于之前请假离职了一个半月,所以这次回来从SVN上更新代码后就出现了这个问题,在跟同时认真确认代码没错并在他们的电脑上正常运行后,我试着研究了一下,确实学到了一点东西。首先,从字面看,他提示程序要启动一个程序清单上没有的运行库?那么首先就要搞清楚程序清单是什么东西。在网上搜了一下,资料并不...原创 2018-07-02 20:22:04 · 679 阅读 · 0 评论 -
联合编译服务端IP地址修改处理
由于公司对网络进行了修改优化,对每个人的电脑的IP地址进行了重分配,所以联合编译的服务器也停止了联机编译的功能。可我刚开始用这个联合编译器,不太清楚怎么修改服务端地址,然后我就在网上搜了一下,发现并没有相关的文章,可能是大佬们觉得太简单不需要记录吧。。。。我在这里记一下! 首先点击VS菜单上的incredible按钮,会弹出一个菜单就像这样。。。。为了省事就直接用块把代码覆盖了,可能是有...原创 2018-04-28 20:42:39 · 700 阅读 · 0 评论 -
C++中的深拷贝与浅拷贝
浅拷贝只拷贝指针,但拷贝后两个指针指向同一个内存空间; 深拷贝不但对指针进行拷贝,而且对指针指向的内容进行拷贝,经深拷贝后的指针指向两个不同地址。 当类成员不包括指针何引用时,浅拷贝并无问题,深拷贝与浅拷贝无太大不同;但当含有指针与引用成员时,当对象的生命周期结束后,浅拷贝会造成同一块内存单元被释放两次,导致内存泄漏。 可以理解为:浅拷贝类似于文件创建快捷方式,而深拷贝原创 2018-02-06 16:23:07 · 383 阅读 · 2 评论 -
二级指针的作用详解
原文:http://blog.csdn.net/majianfei1023/article/details/46629065一、概念在如下的A指向B、B指向C的指向关系中:首先C是"一段内容",比如你用malloc或者new分配了一块内存,然后塞进去"一段内容",那就是C了。C的起始地址是0x00000008。B是一个指针变量,其中存放着C的地址转载 2017-11-28 14:02:36 · 486 阅读 · 0 评论 -
MFC下CSocket编程详解
原文地址:http://blog.csdn.net/yejiansnake/article/details/2175778MFC下CSocket编程详解: 1. 常用的函数和注意事项(详细的函数接口说明请查看MSDN): CSocket::Create 初始化(一般写服务器程序都不要用为好,用下面的 CSocket::Socket 初始化) C转载 2017-12-14 16:48:44 · 678 阅读 · 0 评论 -
《VC++深入详解》学习笔记---12章文件和注册表操作(2)
四、Win32 API对文件操作的支持1.文件的创建与打开CreatFile 函数将创建或打开文件、管道、通信资源等对象,并返回一个读取该对象的句柄。HANDLE CreaeFile(LPCTSTR lpFileName,DWORD dwDesiredAccess,DWORD dwShareMode,LPSECURITY_ATTRIBUTES lpSecurityAtt原创 2017-11-24 11:07:40 · 273 阅读 · 0 评论 -
《VC++深入详解》学习笔记---12章文件和注册表操作(1)
一、const char*和char* constconst char*类型是指向常量的指针(const在*前面),不能修改其指向的内存中的内容,但可以修改其所指向的内存地址。使用:char ch[5] = "lisi";const char* pStr = ch;*pStr = 'w';原创 2017-11-24 09:22:38 · 246 阅读 · 0 评论 -
C++中的函数重载、覆盖与隐藏
一.成员函数被重载的特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。二.覆盖是指派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与基类);(2)函数名字相同;(3)参数相同;(4)基类函数必须有virtual 关键字。 三.“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则原创 2017-11-22 13:44:05 · 233 阅读 · 0 评论 -
图解c/c++多级指针与“多维”数组
原文地址:https://www.cnblogs.com/chenyangyao/p/5222696.html 指针与数组是C/C++编程中非常重要的元素,同时也是较难以理解的。其中,多级指针与“多维”数组更是让很多人云里雾里,其实,只要掌握一定的方法,理解多级指针和“多维”数组完全可以像理解一级指针和一维数组那样简单。 首先,先声明一些常识,如果你对这些常识还不理解,请先去...转载 2018-07-21 18:46:16 · 260 阅读 · 0 评论