![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
weikkkkkk
在该博客上只为看到更多的好文字 自己能有更多的变化 只求耕耘 不求收获
$Myheart = Computer
展开
-
list 容器的用法
#include #include #include #include using namespace std;//创建一个list容器的实例LISTINTtypedef list LISTINT;//创建一个list容器的实例LISTCHARtypedef list LISTCHAR;void main(void){ //--转载 2013-11-10 10:34:29 · 570 阅读 · 0 评论 -
GetLastError()返回值列表
GetLastError()返回值列表:〖0〗-操作成功完成。〖1〗-功能错误。〖2〗-系统找不到指定的文件。〖3〗-系统找不到指定的路径。〖4〗-系统无法打开文件。〖5〗-拒绝访问。〖6〗-句柄无效。〖7〗-存储控制块被损坏。〖8〗-存储空间不足,无法处理此命令。〖9〗-存储控制块地址无效。〖10〗-环境错误。〖11〗-试图加载格式错误的程序。〖12〗-访问码无效。〖13〗-数据无效。〖14〗-...转载 2018-06-20 19:19:52 · 232 阅读 · 0 评论 -
VC给自定义按钮加上事件操作
1:在自定义消息循环加上自己的消息 BEGIN_MESSAGE_MAP(CPatchApplyDlg, CDialog) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() //}}AFX_MSG_MAP ON_BN_CLICKED(IDC_StartGame, &CP...转载 2018-06-21 13:40:21 · 1168 阅读 · 0 评论 -
Windows环境下利用“共享内存”实现进程间通信的C/C++代码---利用CreateFileMapping和MapViewOfFile
进程间的通信方式有很多种, 上次我们说了最傻瓜的“共享外存/文件”的方法。 那么, 在本文中, 我们即将学习“共享内存”的方式实现进程间的通信, 这是IPC最快的方法。有的地方又把这种“共享内存”的方式叫做“内存映射文件”方式。 我们首先来看看进程A对应的程序: #include <iostream> #include <windows...转载 2018-06-21 14:57:49 · 321 阅读 · 0 评论 -
strrchr函数
函数简介函数名称: strrchr函数原型:char *strrchr(const char *str, char c);所属库: string.h函数功能:查找一个字符c在另一个字符串str中末次出现的位置(也就是从str的右侧开始查找字符c首次出现的位置),并返回这个位置的地址。如果未能找到指定字符,那么函数将返回NULL。使用这个地址返回从最后一个字符c到str末尾的字符串。#include...原创 2018-06-22 10:34:17 · 736 阅读 · 0 评论 -
VC 通过进程名 杀掉进程 (KillProcessFromName注释版)
//kill进程from名字 BOOL KillProcessFromName(CString strProcessName) { //创建进程快照(TH32CS_SNAPPROCESS表示创建所有进程的快照) HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); //...转载 2018-06-14 13:45:20 · 1137 阅读 · 0 评论 -
string头文件与cstring头文件
首先说string的头文件1、<string>包装了std的C++头文件2、<string.h>旧的C头文件3、<cstring.h>旧C头文件的std版本,切记,这不是cstring的头文件详见effective c++ 的第49条再说cstring的头文件注:VC9编译环境下1、<atlstr.h>非MFC版本,控制台程序就用这个<afx....转载 2018-06-14 14:03:22 · 464 阅读 · 0 评论 -
C++ 各种类型转换
int转string :int i = 0;char s[200]={0};sprintf(s,"%d",i);//oritoa(i,s,10);bool/int转QStringQString::Number(i);string转QstringQstring::fromstdstring(s);原创 2018-07-27 16:36:16 · 113 阅读 · 0 评论 -
C++11中std::condition_variable的使用
<condition_variable>是C++标准程序库中的一个头文件,定义了C++11标准中的一些用于并发编程时表示条件变量的类与方法等。条件变量是并发程序设计中的一种控制结构。多个线程访问一个共享资源(或称临界区)时,不但需要用互斥锁实现独享访问以避免并发错误(称为竞争危害),在获得互斥锁进入临界区后还需要检验特定条件是否成立:(1)、如果不满足该条件,拥有互斥锁的线程应...转载 2018-08-22 14:38:24 · 453 阅读 · 0 评论 -
函数指针的使用
一、为什么要有函数指针? 函数与数据项相似,函数也有地址。我们希望在同一个函数中通过使用相同的形参在不同的时间使用产生不同的效果。 二、怎么获取函数的地址? 获取函数的地址的方法很简单:只要使用函数名(不用跟参数)即可。 例如: 函数: void function( int a) ; 则func...转载 2018-08-22 14:42:26 · 277 阅读 · 0 评论 -
c语言 多线程的简单实现 线程锁
#include <stdio.h> #include <math.h> #include <pthread.h> #include <stdlib.h> #include <string.h>#include <sys/time.h>#include <unistd.h>// #inclu转载 2018-08-22 14:47:38 · 12342 阅读 · 2 评论 -
c++线程中的几种锁
这个是在中兴面试中被面试问到的一个题“你知道线程中的自旋锁么?”,我当时一脸懵逼,不知道。回来后整理下,在这里对线程中的锁进行一个学习。线程之间的锁有:互斥锁、条件锁、自旋锁、读写锁、递归锁。一般而言,锁的功能越强大,性能就会越低。1、互斥锁互斥锁用于控制多个线程对他们之间共享资源互斥访问的一个信号量。也就是说是为了避免多个线程在某一时刻同时操作一个共享资源。例如线程池中的有多个空闲线...转载 2018-08-22 14:48:38 · 202 阅读 · 0 评论 -
C语言回调函数一个简单的例子
回调函数在linux内核或是单片机上应用得太多,由此也可以大致判断,一个初学者和有个有经验的区别。我转写在这儿,希望更多的人能够看到,一起进步!!!! 回调函数通俗的解释: 普通函数:你所写的函数调用系统函数,你只管调用,不管实现。 回调函数:系统调用你所写的函数,你只管实现,不管调用。以下是使用C语言实现回调函数的一个例子:#include <...转载 2018-08-22 14:51:37 · 1290 阅读 · 0 评论 -
C++回调函数的一点理解
回调函数是通过函数指针调用的函数:把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,就称为回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。 通俗点说就是:在A类中调用B类中的某个方法C,然后B类反过来调用A类中的方法D,则D就是回调函数。 打个比方:我们将A类看成一个人...转载 2018-08-22 14:53:12 · 190 阅读 · 0 评论 -
回调函数基本介绍和基本使用场景
1.回调函数基本定义- 什么是函数指针 通俗来说,函数指针是一个指向特定函数的指针。函数的类型由其参数及返回类型共同决定,与函数具体名称无关。示例代码如下: int testFun1(int param1,long param2,float param3); //普通函数定义 该函数的类型为int(int,long,float),该类型的函数指针可以定义为如下: int (*pTf)...转载 2018-08-22 14:54:30 · 543 阅读 · 0 评论 -
C++ MD5加密函数
任务:对输入的字符串进行MD5加密。#include <string>#include <iostream>#include <openssl/md5.h>using namespace std;/** * */string MD5(const string& src ){ MD5_CTX ctx; st...转载 2018-08-23 09:24:48 · 4250 阅读 · 1 评论 -
c++网站
https://en.cppreference.com/w/http://www.cplusplus.com/reference/原创 2018-09-06 14:57:42 · 194 阅读 · 0 评论 -
windows下使用socket网络进程通信
Windows下Socket编程主要包括以下几部分:服务端 1、初始化Windows Socket库。 2、创建Socket。 3、绑定Socket。 4、监听。 5、Accept。 6、接收、发送数据。客户端 1、初始化Windows Socket库。 2、创建Socket。 3、连接Socket。 4、接收、发送数据。服务端每接...转载 2018-09-14 16:21:34 · 1382 阅读 · 0 评论 -
c++ queue 初探
queue (队列) 先进先出。只能在队的前端进行删除 , 在队的后端进行插入。在 #include 头文件中。定义:需要定义两个参数 1、元素类型(必须的)。 2、容器类型(不定义默认为deque).(今天不讨论这个参数,先默认)转载 2018-05-08 15:09:19 · 518 阅读 · 0 评论 -
c++判断程序及操作系统位数
曾经在书上看到过,也被人问起过,搜索过,为了记忆更加深刻,还是写一篇博文吧~程序位数是将一段程序编译后,程序本身的位数,比如32bit。32bit程序在一般情况下可以在32bit和64bit的操作系统上运行。下面分别列出获取程序位数和操作系统位数的方法:程序位数:通过指针位数即可获得: sizeof(void*) * 8 操作系统位数:Windows:转载 2018-04-27 11:47:18 · 3543 阅读 · 0 评论 -
如何解决 “fatal error C1083: ”无法打开包括文件
最开始重新导入项目时,遇到过 "fatal error C1083"这个错误,当时经同事指点,改了加载头文件的附加路径,问题很容易就解决。今天将整个工程改的编译方式改为Release方式,再次遇到"fatal errorC1083",决心将具体的解决方法以图文的方式记录下来,一方面加深自己的印象,另一方面,也方便遇到类似问题的同学找到快速解决方案。步骤1:定位报“fatal error C转载 2018-04-26 13:33:12 · 15646 阅读 · 0 评论 -
vector 容器的用法
vector 是 C++ 标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector 之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说 vector 是一个能够存放任意类型的动态数组,能够增加和压缩数据。为了可以使用 vector ,必须包含 #include 。 Vector 属于std命名转载 2013-11-10 10:36:38 · 762 阅读 · 0 评论 -
堆和栈的区别
一个由 C/C++ 编译的程序占用的内存分为以下几个部分:(关于 C/C++ 内存分成几个区,没有查阅很官方的文档,暂且整理各网帖内容如下) 1、栈区 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区/自由存储区 一般由程序员分配释放, 若程序员不释转载 2013-11-10 10:38:46 · 631 阅读 · 0 评论 -
C/C++内存知识
这个是个重点知识,我觉得还是看C++ primer之类的经典著作比较好。 原文http://www.cnblogs.com/lancidie/archive/2011/08/05/2128318.html 对于本文,本人也是有很多不懂,等以后参阅了其他专业书籍后或许能懂。[目录]导语1 内存管理 1.1 C+转载 2013-11-10 10:47:54 · 1254 阅读 · 0 评论 -
写程序的注意点
【请知】非原创,转载文章,文章后有出处.(1)函数编写的时候是否借口类型一致(2) if 是否可以跳出(3)while、for是否会发生死循环(4)宏的优先级是否有保证(5)所有指针使用前是否可能合法(6) 全局变量是否是多进程共同使用,是否加锁(7) 嵌套锁是否按照顺序进行,会不会发生死锁(8) 程序优化的时候是否对部分数据使用了v转载 2013-11-10 11:34:35 · 536 阅读 · 0 评论 -
关于C++ const 的全面总结
【请知】非原创,转载文章,文章最后有注明出处.C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助。Const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。 一、Const作用 如下表所示:No.转载 2013-11-10 11:56:37 · 449 阅读 · 0 评论 -
提高代码的运行效率
【请知】非原创,转载文章,文章最后有注明出处.在下面的blog当中,我将会讲解一些提高个人代码效率的一些手段。这些手段都是被实践证明,切实可行的。但是不同的处理器和处理平台上面可能会有所差别,但是本质上是一样的。 (1) 用for(; ;) 代替while(1)(2) 循环的时候首先进行内部数据的循环,然后进行外部数据的循环(3) 同一层循环之内,尽量只转载 2013-11-10 11:49:02 · 718 阅读 · 0 评论 -
C++中的标准库<cstdlib>随机数的函数:rand()和srand()
所谓的“伪随机数”指的并不是假的随机数,这里的“伪”是有规律的意思。其实绝对的随机数只是一种理想状态的随机数,计算机只能生成相对的随机数即伪随机 数。计算机生成的伪随机数既是随机的又是有规律的 —— 一部份遵守一定的规律,一部份则不遵守任何规律。比如“世上没有两片形状完全相同的树叶”,这正点到了事物的特性 —— 规律性;但是每种树的叶子都有近似的形状,这正是事物的共性 —— 规律性。从这个角度讲,转载 2018-04-23 15:16:43 · 4766 阅读 · 0 评论 -
C++为什么要用虚函数
如果子类覆盖的父类的虚函数则父类的指针或引用实际指向子类的对象那通过该指针或引用调用虚函数时,则将调用子类的(虚)函数如果不是虚函数,则将调用父类的函数虚函数的优势在于当用指针调用虚函数的时候,即使是基类类型的指针,也会调用到派生类型的函数。 我们知道,用C++开发的时候,用来做基类的类的析构函数一般都是虚函数。可是,为什么要这样做呢?下面用一个小例子来说明: 有转载 2018-04-23 15:34:32 · 1829 阅读 · 0 评论 -
为什么一个对象可以用父类声明,却用子类实例化
基本概念这个实例是子类的,但是因为你声明时是用父类声明的,所以你用正常的办法访问不到子类自己的成员,只能访问到从父类继承来的成员。在子类中用override重写父类中用virtual申明的虚方法时,实例化父类调用该方法,执行时调用的是子类中重写的方法;如果子类中用new覆盖父类中用virtual申明的虚方法时,实例化父类调用该方法,执行时调用的是父类中的虚方法; /// /转载 2018-04-23 15:40:42 · 1446 阅读 · 0 评论 -
c++线程中的几种锁
这个是在中兴面试中被面试问到的一个题“你知道线程中的自旋锁么?”,我当时一脸懵逼,不知道。回来后整理下,在这里对线程中的锁进行一个学习。线程之间的锁有:互斥锁、条件锁、自旋锁、读写锁、递归锁。一般而言,锁的功能越强大,性能就会越低。1、互斥锁互斥锁用于控制多个线程对他们之间共享资源互斥访问的一个信号量。也就是说是为了避免多个线程在某一时刻同时操作一个共享资源。例如线程池中的有多个空闲线转载 2018-04-24 10:34:51 · 378 阅读 · 0 评论 -
构建自己的C/C++插件开发框架
原文转自https://blog.csdn.net/chgaowei构建自己的C/C++插件开发框架(一)——初步设想最近一直在学习OSGI方面的知识。买了一本《OSGI原理和最佳实践》,可是还没有到。遗憾的是,OSGI目前的几个开源框架只支持Java,对C和C++都不支持的。可惜我们公司目前主要的开发语言还是c和c++,即便是引进OSGI,所得的好处范围有限。而我对松散耦合的转载 2018-04-24 11:48:56 · 13956 阅读 · 1 评论 -
C++中explicit的用法
C++提供了关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生,声明为explicit的构造函数不能在隐式转换中使用。C++中, 一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数), 承担了两个角色。 1 是个构造;2 是个默认且隐含的类型转换操作符。所以, 有时候在我们写下如 AAA = XXX, 这样的代码, 且恰好XXX的类型转载 2018-04-24 14:07:40 · 102 阅读 · 0 评论 -
关于VS的操作:Additional Include directories、Additional Library directories、Addition
1.Configuration Properties => C/C++ => General => Additional Include directories:添加额外的你要搜索的包含头文件的“include”目录。2.Configuration Properties => Linker => General => Additional Library directories:添加额外的你要转载 2018-05-02 10:49:05 · 4391 阅读 · 0 评论 -
C\C++中strcat()函数
将两个char类型链接。char d[20]="GoldenGlobal"; char *s="View"; strcat(d,s);结果放在d中printf("%s",d);输出 d 为 GoldenGlobalView (中间无空格)d和s所指内存区域不可以重叠且d必须有足够的空间来容纳s的字符串。返回指向d的指针。C函数转载 2018-04-25 10:00:08 · 5372 阅读 · 0 评论 -
C/C++路径问题之正斜杠与反斜杠
今天在写程序的时候突然想不清楚路径的斜杠是怎么写的了。看了下程序里既有反斜杠也有正斜杠,当然还有双反斜杠。然后就查了点资料,总结了一下~正斜杠,又称左斜杠,符号是"/"反斜杠,也称右斜杠,符号是"\"DOS路径中:D:\SIN\ ...这是反斜杠的作用后面跟着的是文件名D:\dir /P ...这就是正斜杠转载 2018-04-25 10:00:58 · 6171 阅读 · 0 评论 -
vs 设置dll、lib库的输出路径
vs2008中,有些项目上的功能是要生产库文件给其他项目调用的,以下是一些设置库文件(x.dll和x.lib)输出路径的方法.设置x.dll 输出路径方法是在右键项目的"属性"->连接器->常规, 然后在常规属性界面中的 "输出文件" 中填入自己想要x.dll文件的输出路径. 设置x.lib 输出路径方法是在右键项目的"属性"->连接器->高级, 然后在高级属性界面中的 "转载 2018-04-25 10:58:33 · 5018 阅读 · 0 评论 -
VS中的路径宏:OutDir、ProjectDir、SolutionDir等各种路径的说明
$(RemoteMachine)设置为“调试”属性页上“远程计算机”属性的值。有关更多信息,请参见更改用于 C/C++ 调试配置的项目设置。$(References)以分号分隔的引用列表被添加到项目中。$(ConfigurationName)当前项目配置的名称(例如“Debug”)。$(PlatformName)当前项目平台的名称(例如“Wi转载 2018-04-25 11:10:29 · 334 阅读 · 0 评论 -
多态的概念和作用(深入理解)
多态是面向对象的重要特性,简单点说:“一个接口,多种实现”,就是同一种事物表现出的多种形态。编程其实就是一个将具体世界进行抽象化的过程,多态就是抽象化的一种体现,把一系列具体事物的共同点抽象出来, 再通过这个抽象的事物, 与不同的具体事物进行对话。对不同类的对象发出相同的消息将会有不同的行为。比如,你的老板让所有员工在九点钟开始工作, 他只要在九点钟的时候说:“开始工作”即可,而不需要对销售人...转载 2018-09-21 15:44:14 · 1083 阅读 · 1 评论