
c++
文章平均质量分 55
小小的CODER
辛劳的小码农!欢迎讨论
展开
-
C++中虚拟继承总结
1.为什么要引入虚拟继承虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如:类D继承自类B1、B2,而类B1、B2都继承自类A,因此在类D中两次出现类A中的变量和函数。为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承,而A就成了虚拟基类。实现的代码如下:class Aclass B1:public virtual A;class B2:public vi翻译 2015-03-09 17:58:43 · 459 阅读 · 0 评论 -
STL之map的高级用法
STL之map的高级用法 STL中的容器map,映射和多重映射基于某一类型Key的键集的存在,提供对T类型的数据进行快速和高效的检索。对map而言,键只是指存储在容器中的某一成员。Map不支持副本键,multimap支持副本键。Map和multimap对象包涵了键和各个键有关的值,键和值的数据类型是不相同的,这与set不同。set中的key和value是Key类型的,而map原创 2016-03-24 12:49:26 · 1321 阅读 · 0 评论 -
VS配置及使用 Visual Leak Detector
VS配置及使用 Visual Leak DetectorVisual Leak Detector是一款用于Visual C++的免费的内存泄露检测工具。从使用角度来讲,Visual Leak Detector简单易用,对于使用者自己的代码,唯一的修改是#include Visual Leak Detector的头文件后正常运行自己的程序,就可以发现内存问题。从研究的角度来讲,如果深入Vis原创 2016-07-10 13:51:47 · 5236 阅读 · 0 评论 -
STL源码分析之二—迭代器
STL源码分析之二—迭代器1.Traits编程技巧: Traits编程技法大量运用在STL实现品中,它利用“内嵌型别”的编程技巧与编译器的template参数推导功能,增强C++未能提供的关于型别认证方面的能力,弥补C++不为强型别语言的遗憾,例:Template Struct MyIter{Typedef T value_type;T*ptr;MyIt原创 2016-07-26 23:02:13 · 502 阅读 · 0 评论 -
C++读取INI文件内容存放Map中
一看到标题估计会有人会说,为什么还要讲INI文件内容读出来存放到map中呢?这不是浪费空间,时间么。。。 因为:C++在读取INI文件时,一般都是在需要时,再根据GetPrivateProfileString函数,读取需要的key对应的值,但是,往往在项目中,读取文件花费的时间比较多,且读取文件也是会存在读取错误的情况。综上考虑,将在开始的时候,从INI文件中读取所有信息,保存到原创 2016-09-05 22:16:55 · 3237 阅读 · 0 评论 -
C++ 如何读取文件的版本信息
C++ 如何读取文件的版本信息有些时候,我们需要知道程序调用的库或者某个exe文件的版本信息(或其他相关属性信息时)。这时就需要考虑到如何去读取这些文件的版本信息呢? 从万能的网上查到了VerQueryValue函数,可以实现我们的需求。说明:在使用VerQueryValue函数之前,必须先使用GetFileVersionInfoSize和GetFileVersionIn原创 2016-09-27 21:54:22 · 9073 阅读 · 1 评论 -
xpp文件与cpp文件的区别
今天看代码,看到xpp文件的代码,然后上网查资料,基本上没有查到,后来问了同事,才知道是怎么回事,所以现在记录下来,便于以后记忆,也同时让大家能了解到。同事说xpp文件是不加入到make中,不进行编译的,而cpp文件是要进行编译的;要使用xpp文件,只需在cpp文件或hpp文件中include进来就可以使用了,,,我理解了一下,应该和宏定义的机制差不多,在预编译时,xpp文件内容就加载进了包含原创 2015-10-19 17:26:07 · 1477 阅读 · 1 评论 -
设计模式C++实现-简单工厂模式、工厂方法模式、抽象工厂模式
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍工厂模式的实现。 工厂模转载 2017-02-25 15:45:48 · 416 阅读 · 0 评论 -
C++如何将2个BYTE数据转化为1个BYTE
C++如何将2个BYTE数据转化为1个BYTE在解析串口读取数据的时候遇到这个问题:“从串口读取数据中取两个BYTE,但是目标是将这两个BYTE转化为一个BYTE,如:0x01 0x02 -> 0x12”。其实转化思路很简单:将0x01 0x12,即将高位BYTE左移4位在加上(或“位或上”)低位的BYTE,就得到想要的数据了。但是,当串口读取到的是ASCII的形式,原创 2017-06-07 14:20:13 · 3587 阅读 · 0 评论 -
7z lzma920源码封装 C++ DLL,可直接调用压缩
7z lzma920源码封装 C++ DLL,可直接调用压缩 该My7zdll,由7z lzma920源码封装而来,dll项目及测试项目路径在:F:\my7z\sourcechangemy7z\lzma920\CPP\7zip\UI\My7zDLL和My7zDLLTest两个项目。使用该DLL程序时,需要附带原版7z.dll (可在7z安装包中找到)、My7zDLL.dll 、MyTest...原创 2017-06-14 15:44:42 · 3302 阅读 · 0 评论 -
编写VB可调用C/C++ DLL
1.创建Win32控制台应用程序,选择Dll ,附加选项为空项目。2.添加mydll.h 、mydll.cpp 、mydll.def三个文件3.分别编辑三个文件。如下mydll.h中:#include int WINAPI Add( char *tString);mydll.cpp文件中:#include "mydll.h"int WINAPI Add( char *t原创 2017-08-23 11:25:46 · 1769 阅读 · 1 评论 -
Linux下如何获取MAC地址
Linux下如何获取MAC地址原创 2017-06-07 14:24:11 · 3625 阅读 · 0 评论 -
C++ 17 尝鲜之 the overload pattern .
以前的operator overload 可能是这样的。struct PrintVisitor{ void operator()(int& i) const { std::cout << "int: " << i; } void operator()(float& f) const { std...原创 2019-08-02 13:47:15 · 583 阅读 · 0 评论 -
C#操作mysql数据库
C#操作mysql数据库1.首先下载MySQL数据库的.NET驱动http://dev.mysql.com/get/Downloads/Connector-Net/mysql-connector-net-5.0.8.1-noinstall.zip/from/pick#mirrors将bin目录里的MySql.Data.dll文件复制到工程目录,并且将dll的引用加入到项目中,这样就可以原创 2016-02-22 13:22:24 · 5026 阅读 · 1 评论 -
GTK解决Pango-WARNING **: Invalid UTF-8 string passed to pango_layout_set_text()问题
GTK解决Pango-WARNING **: Invalid UTF-8 string passed to pango_layout_set_text()问题 解决方法:使用g_locale_to_utf8()函数gchar* g_locale_to_utf8 (const gchar *opsysstring, gssize len,原创 2016-01-06 11:11:01 · 4668 阅读 · 0 评论 -
枚举类型
枚举类型是一种基本数据类型,定义如下:enum weekday{ sun,mou,tue,wed}a,b;作用:枚举类型是对一个变量取值范围的限定,在花括号内的是它的取值范围,及其变量只能取值为花括号内的一个值,如果赋给该类型变量的值不在列表中,则会报错或警告。例子:int main(){ enum weekday{sun,mon,tue,wed}a,b,c; a =原创 2015-08-28 17:12:29 · 518 阅读 · 0 评论 -
SetConsoleCtrlHandler函数
函数原型: BOOL SetConsoleCtrlHandler( PHANDLER_ROUTINE HandlerRoutine, //回调函数 BOOL Add // 表示添加还是删除)原创 2015-09-28 10:03:05 · 3193 阅读 · 1 评论 -
WaitForSingleObject函数的使用
等待函数可使线程自愿进入等待状态,直到一个特定的内核对象变为已通知状态为止。 WaitForSingleObject 函数DWORD WaitForSingleObject(HANDLE hObject, DWORD dwMilliseconds);第一个参数hObject标识一个能够支持被通知/未通知的内核对象(前面列出的任何一种对转载 2015-09-28 12:48:23 · 537 阅读 · 0 评论 -
C++读写文件保存至容器list中
C++读写文件及容器list基本操作 大家在开始入门C/C++时,都要练习个学生管理系统啥的,主要都为了进一步掌握所学知识,并能使用这些知识。其中这个小项目的重难点就在数据的操作了,其中如何将数据保存到文件中及如何将文件中的内容读出并存放到list中。 读写文件基本思路是,打开文件,然后进行读写操作,在关闭文件。其中读写文件我是选择了fscanf()和fprintf()原创 2015-11-05 21:09:28 · 7215 阅读 · 0 评论 -
VS编写DLL
1.动态链接库(Dynamic Link Library或者Dynamic-link library,缩写为DLL),是微软公司在微软视窗操作系统中实现共享函数库概念的一种实作方式。DLL是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。这些库函数的扩展名是.DLL、OCX(包含ActiveX控制的库)或者.DRV(旧式的系统驱动程序)。函数的可执行代码位于一个DLL 中,原创 2015-09-24 22:15:06 · 1090 阅读 · 0 评论 -
vector<vector<string>> 双层vector使用
vector> 双层vector使用当我在读写数据库时,数据库数据保存的问题是个难点,而我考虑的是双层vector数据结构来存储数据。std::vector>& vAllRowwhile(读取数据到r中){std::vector vRow;vRow.clear();vRow.push_back(r[0]);vRow.push_back(r[1]);vRo原创 2015-11-17 17:06:07 · 12541 阅读 · 0 评论 -
大话重构之系统重构
系 统 重 构一:什么是系统重构?重构(名词):就是在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。重构(动词):使用一系列重构准则(手法),在不改变"软件之可察行为"前提下,调整其结构。两种定义都强调是在不改变"软件的外部行为"前提下,不改变"软件之可察行为"就是说让修改不影响外部使用原创 2015-11-01 17:28:23 · 1207 阅读 · 0 评论 -
MFC之listControl基本使用
MFC之listControl基本使用1.把view 属性改为Report 和single Selection 属性改为True;2.代码编写:CRect rect;m_List.GetClientRect(&rect);//获得当前listcontrol的宽度m_List.SetExtendedStyle(m_List.GetExtendedStyle() |LV原创 2015-11-19 10:50:12 · 5208 阅读 · 0 评论 -
C++ Windows读写INI文件
C++ Windows读写INI文件一:将信息写入到INI文件所用函数:BOOL WritePrivateProfileString(LPCSTR lpAppName, LPCSTR lpKeyName, LPCSTR lpString, LPCSTR lpFileName)参数说明:LPCSTR lpAppName ini文件中字段原创 2015-12-13 13:52:07 · 3932 阅读 · 0 评论 -
串口编程函数分析
串口编程函数分析1.连接串口串口是系统资源,也当作文件一样操作,所以也用CreateFile函数,如果调用成功返回串口句柄,如果失败返回INVALID_HANDLE_VALUE值.函数参数说明如下:HANDLE WINAPI CreateFile( __in LPCTSTR lpFileName,//串口名(逻辑端口名),如:”COM1”,”COM2” __原创 2015-12-16 21:31:41 · 756 阅读 · 0 评论 -
将整型数据转换为string类型
将整型数据转换为string类型 在进行代码数据处理的时候,遇到数据类型转换的问题。因为string类型重载了+等操作符,处理数据起来比较方便,但是有些时候需要将其他类型的数据加到string类型中,这就出现了其他类型转换为string类型的问题。 要实现Int 等类型转换为string类型,首先要用系统函数ltoa 、itoa等转换为char* ,然后在转换为原创 2015-12-02 16:33:15 · 3681 阅读 · 0 评论 -
C#调用C++DLL
C#调用C++DLL1.首先将C++Dll文件放在对应C#工程目录下2.引入命名空间 using System.Runtime.InteropServices;3.将需要的函数封装在一个库内 class PlatfromInvokeTest { [DllImport("Interface.dll", CharSet = CharS原创 2016-01-20 16:16:36 · 456 阅读 · 0 评论 -
C++17 尝鲜之 structured bindings
老版本的C++函数返回值都是只有一个内嵌类型或者自定义类型。所以 以前 我们如果想要返回多个值,就必须将其封装为struct, 然后在将其返回。但是C++17 引入了Structured Bindlings 这个特性。他是通过std::tuple,std::pair,std::array, and aggregate structures 来实现多个返回值。下面来个例子, 更加直观...原创 2019-08-12 10:02:11 · 1329 阅读 · 0 评论