C++
文章平均质量分 87
狂奔之林
技术控,对很多技术都有涉猎,喜欢开源,了解新技术
走在架构师的路上
展开
-
C++ SHFileOperation实现文件、文件夹拷贝、删除、重命名
/// <summary> /// 拷贝文件 /// </summary> /// <param name="srcFile"></param> /// <param name="destFile"></param> /// <returns></returns> int FastCopyFile(const char* srcFile, const cha...原创 2021-04-21 15:55:49 · 1342 阅读 · 0 评论 -
C++ STL快速入门
在数月之前的机试中第一次体验到STL的威力,因为自己本来一直在用C语言做开发,很多数据结构都是自己造的,比如链表、队列等,第一次接触C++ STL后发现这些数据结构都已经给我提供好了,我直接拿去调用就好了,真是超级方便。最近的项目中也遇到了STL一些容器,所以现在自己好好总结一下STL中一些最常用的容器的使用方法,方便自己日后查阅。C++ STL中最基本以及最常用的类或容器无非就是以下几个:...转载 2019-09-17 14:14:32 · 181 阅读 · 0 评论 -
C/C++中volatile关键字详解
1. 为什么用volatile? C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的 memory barrier。这是 BS 在 "The C++ Programming Language" 对 volatile 修饰词的说明:A volatile specifier is a hint to a compiler that an object may change its value in ways not specified by th...转载 2020-06-01 09:36:28 · 261 阅读 · 0 评论 -
VC++创建.rc资源文件
初学MFC,对资源文件总是很困惑。一上来就直接自动生成了那么多的东西,尤其是.rc和resource.h文件。这两天了解了一下这个方面,在这里分享一下,欢迎交流学习。 1.前两天看了一个关于MFC初始化的一个教程,网址为http://www.jizhuomi.com/software/267.html,然后根据上面的例程自己新建了个项目,例程里的源码做了一些微小的改动,主要是在项目里建了两个类:...转载 2019-10-22 14:26:29 · 4427 阅读 · 0 评论 -
C++ 遍历注册表项下的所有键和值
#include "stdafx.h"#include <time.h>#include <windows.h>#include <iostream>#include <stdio.h> #include <tchar.h> #include <fstream>#include <queue>...转载 2019-08-02 14:36:11 · 2586 阅读 · 0 评论 -
64位读取注册表与32位的区别
有一个读取注册表信息的程序 if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, subkeystring , 0, KEY_READ, &hKey) == ERROR_SUCCESS)/,在32位下完全正常,但是在64位返回值正确,但就是读不到东西。后来单步发现读不到东西,就搜64位读注册表失败,发现需要加if (RegOpenKeyEx(HKEY_LOCAL...转载 2019-08-02 14:32:47 · 580 阅读 · 0 评论 -
Win32中的数据类型
数据类型说明BOOL布尔变量,实际上是UINTCOLORREF用作颜色索引的32位整数DWORD32位的无符号整数HANDLE32位的无符号整数,用作句柄HINSTANCE32位的无符号整数,用作实例句柄HWND32位的无符号整数,用作窗口句柄HDC一个设备描述背景的句柄LONG32位带符号整数LPARAM32位整数,用作窗口函数或者其他回调...原创 2019-08-02 14:31:50 · 446 阅读 · 0 评论 -
c++ 判断文件或是文件夹是否存在,比较好的做法
#include <windows.h>void main(){//文件或文件夹都可以判断,最后的\\号有无都没关系if (-1!=GetFileAttributes("D:\\MyProjects\\临时程序")) //如果文件夹存在, 最后的\\号有无都没关系printf("文件夹存在\n");if (-1!=GetFileAttributes("D:\\MyP...原创 2019-08-02 14:30:38 · 291 阅读 · 0 评论 -
C++获取当前所有进程的完整路径
实现代码#include <stdio.h>#include <windows.h>#include <tlhelp32.h>#include <string>#include <tchar.h>#include <Psapi.h>#pragma comment (lib,"Psapi.lib") BOO...转载 2019-08-02 14:27:39 · 713 阅读 · 0 评论 -
C++ 引用Lib和Dll的方法总结
1.什么是静态连接库LIB,什么是动态链接库 DLL 静态链接库与动态链接库都是共享代码的方式,都是二进制格式的 2.静态链接库LIB和动态链接库DLL的区别若采用静态链接库,lib 中的指令都全部被直接包含在最终生成的 EXE 文件中了。而动态动态链接库则不必被包含在最终 EXE 文件中,EXE 文件执行时可以“动态”地引用和卸载...转载 2019-08-02 14:39:12 · 4550 阅读 · 1 评论 -
Debug和Release模式 && 静态和动态编译
1.Release和Debug的区别 Release版称为发行版,Debug版称为调试版。 Debug中可以单步执行、跟踪等功能,但生成的可执行文件比较大,代码运行速度较慢。Release版运行速度较快,可执行文件较小,但在其编译条件下无法执行调试功能。 Release的exe文件链接的是标准的MFC DLL(Use MFC in a shared or static dll)...转载 2019-09-16 11:44:50 · 2572 阅读 · 0 评论 -
C++调用动态库
1.DLL的隐式调用隐式链接采用静态加载的方式,比较简单,需要.h、.lib、.dll三件套。新建“控制台应用程序”或“空项目”。配置如下:项目->属性->配置属性->VC++ 目录-> 在“包含目录”里添加头文件testdll.h所在的目录项目->属性->配置属性->VC++ 目录-> 在“库目录”里添加头文件testdll.lib所在...转载 2019-09-17 10:19:21 · 6736 阅读 · 0 评论 -
C++模板中typename和class的区别
C++模板中typename和class的区别我们知道在C++Template的定义方法为:template<class T>...或者是template<typename T>...那么这两种不同的定义方式有什么区别呢?答案是:在模板定义语法中class和typename的作用是完全一样的。但是typename还有另外一个作用:使用嵌套依赖类型我们拿STL源码...原创 2019-09-17 10:52:35 · 193 阅读 · 1 评论 -
DeleteDC 与 ReleaseDC的区别
DeleteDC 与 CreateDC 对应ReleaseDC 与 GetDC 对应借过来的(GetDC),就要放还回去(ReleaseDC)自已创建的(CreateDC),要自已删除(DeleteDC)总之,要“用过之后, 不留痕迹”还有以下的特殊情况,如CClientDC dc(this)或CPaintDC dc(this);对于这样的dc到最后是否需要ReleaseD...转载 2019-09-17 17:56:44 · 570 阅读 · 0 评论 -
关于SelectObject之后是否要恢复之前的GDI对象
以下列代码为例 { // 创建内存DC CDC mMemDc; mMemDc.CreateCompatibleDC( &dc ); // 创建兼容位图 CBitmap bmpMemBmp; ...转载 2019-09-17 17:57:47 · 400 阅读 · 0 评论 -
NULL在C/C++下的不同定义
NULL在C/C++下的不同定义在C++中,NULL就是0,定义如下在C中,NULL就数字0在C++中,NULL是个万能指针,可以代表指向0地址的任何数据类型#ifndef NULL #ifdef __cplusplus #define NULL 0 #else #define NULL ((void *)0) #end...转载 2019-09-17 17:59:03 · 869 阅读 · 0 评论 -
map和unordered_map的差别和使用
map和unordered_map的差别还不知道或者搞不清unordered_map和map是什么的,请见:http://blog.csdn.net/billcyj/article/details/78065438需要引入的头文件不同map: #include < map >unordered_map: #include < unordered_map >内部实...转载 2019-08-05 17:40:45 · 287 阅读 · 0 评论 -
C++ 无法解析的外部符号解决方案
背景 当在编译c++项目时出现以下情景,比如使用C++底层进程相关函数原因 未引用相关头文件和导入静态库解决方案 1. 引入头文件 #include <psapi.h>2.导入静态库 #pragma comment(lib, "Psapi.lib ")或者在项目属性中附加依赖项...原创 2019-08-02 15:59:20 · 20978 阅读 · 2 评论 -
FileManager
#include #include #include "stdafx.h"#include "FileManager.h"#include "resource.h"#include "FileHelperDlg.h"using namespace std;CFileManager::CFileManager(char* pcMathLine, c原创 2014-12-22 17:01:09 · 701 阅读 · 0 评论 -
VC常见数据类型转换详解
刚接触VC编程的朋友往往对许多数据类型的转换感到迷惑不解,本文将介绍一些常用数据类型的使用。 我们先定义一些常见类型变量借以说明 int i = 100; long l = 2001; float f=300.2; double d=12345.119; char username[]="女侠程佩君"; char temp[200]; char *buf;转载 2015-02-05 16:15:45 · 384 阅读 · 0 评论 -
C++动态链接/静态链接库编程
1. 概论先来阐述一下 DLL(Dynamic Linkable Library) 的概念,你可以简单的把 DLL 看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库-静态链接库-动态链接库”的时代。静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib 中的指令都被直接包含在最终生成的 EXE 文件中了。但是若使用 D转载 2014-12-30 14:18:53 · 2407 阅读 · 0 评论 -
Pragma的几种常用用法
Pragma的几种常用用法其格式一般为: #Pragma Para其中Para 为参数,下面来看一些常用的参数。(1)message 参数。 Message 它能够在编译信息输出窗口中输出相应的信息其使用方法为:#Pragma message(“消息文本”)当编译器遇到这条指令时就在编译输出窗口中将消息文本打印出来。(2)#pragma once (比较常用)只原创 2015-01-05 13:52:30 · 1033 阅读 · 0 评论 -
C/C++中static关键字作用总结
1.先来介绍它的第一条也是最重要的一条:隐藏。(static函数,static变量均可)当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。举例来说明。同时编译两个源文件,一个是a.c,另一个是main.c。//a.cchar a = 'A'; // global variablevoid msg(){ printf("Hello\n");} 复制代码//main.ci转载 2015-05-06 16:52:58 · 611 阅读 · 0 评论 -
Visual C++ 全能速查宝典
第1章 数学函数 1.1 _chgsign——求参数的相反数 1.2 _copysign——复制数据 1.3 _hypot——求直角三角形斜边长度 1.4 _max——求两个数中的大数 1.5 _min——求两个数中的小数 1.6 _scalb——求参数的(2^exp)倍数 1.7 abs——求整数的绝对值 1.8 acos——求反余弦 1.9 asin——求反转载 2015-05-20 09:13:04 · 1279 阅读 · 0 评论 -
char TCHAR WCHAR区别 与 转换
char TCHAR WCHAR区别 与 转换#ifdef UNICODE typedef wchar_t TCHAR; #else typedef unsigned char TCHAR; #endif typedef unsigned ch转载 2015-07-14 09:53:26 · 505 阅读 · 0 评论 -
CString 成员函数用法大全
CString的构造函数CString( );例:CString csStr;CString( const CString& stringSrc );例:CString csStr("ABCDEF中文123456"); CString csStr2(csStr);CString( TCHAR ch, int nRepeat = 1 );例:CString转载 2014-12-16 09:10:47 · 443 阅读 · 0 评论 -
正则表达式30分钟入门教程
正则表达式30分钟入门教程来园子之前写的一篇正则表达式教程,部分翻译自codeproject的The 30 Minute Regex Tutorial。由于评论里有过长的URL,所以本页排版比较混乱,推荐你到原处查看,看完了如果有问题,再到这里来提出.一些要说的话:如果你没有正则表达式的基础,请跟着教程“一步步来”。请不要大概地扫两眼就说看不懂——以这种态度我写转载 2015-02-07 15:22:06 · 375 阅读 · 0 评论 -
#pragma详细解释
在#Pragma是预处理指令它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C ++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。其格式一般为: #Pragma Para其中Para 为参数,下面来看一些常用的参数。(1)message转载 2015-05-04 09:57:55 · 1622 阅读 · 0 评论 -
VC 读注册表获取安装程序
Windows 系统中,安装程序都可以在注册表 HKEY_LOCAL_MACHINE\SoftWare\Microsoft\Windows\CurrentVersion\Uninstall 获取,并且xp、vista、win7、win8都一样打开注册表命令:regedit,依次展开上述注册表路径,安装程序列表如下图: 获取系统安装程序列表:[转载 2015-08-18 09:04:31 · 434 阅读 · 0 评论 -
VC 读写注册表
近来由于需要在自己写的程序中对注册表进行操作。总结些经验,并做个一个DEMO供日后使用,现在把它拿出来和大家分享…为了使用方便,把一些操作写成了函数,以便方便调用,具体代码如下所示: 一、定义HKEY hKey;char content[256]; //所查询注册表键值的内容DWORD dwType=REG_SZ; //定义读取数据类型DWORD dwLeng转载 2015-08-18 09:06:00 · 469 阅读 · 0 评论 -
C++程序常见的性能调优方式
转载自:http://www.708luo.com/?p=36冗余的变量拷贝相对C而言,写C++代码经常一不小心就会引入一些临时变量,比如函数实参、函数返回值。在临时变量之外,也会有其他一些情况会带来一些冗余的变量拷贝。之前针对冗余的变量拷贝问题写过一些帖子,详情请点击这里。 多重过滤很多服务都会过滤的部分结果的需求,比如游戏交谈中过滤需要过滤掉敏感词。假设现在有两个过滤词典,一个词典A内容较少,...转载 2018-06-22 11:52:12 · 8136 阅读 · 0 评论 -
const int、const int *、int *cosnt、const int * const、const int &的区别
转自:https://blog.csdn.net/itworld123/article/details/78967080零、const的今世来生 关键字又叫做限定符,因为它限定了声明的含义 英文全称:constant,意义就是常数,故被const修饰的变量类型都是常类型,即不可改变。 C中的const,在C90(ANSI C 或者 C89)中加入的关键字(之前有个K&...转载 2019-04-12 12:40:47 · 383 阅读 · 0 评论 -
C++用new和不用new创建类对象区别
转自:https://www.cnblogs.com/kissfu/p/3301436.htmlnew创建类对象,使用完后需使用delete删除,跟申请内存类似。所以,new有时候又不太适合,比如在频繁调用场合,使用局部new类对象就不是个好选择,使用全局类对象或一个经过初始化的全局类指针似乎更加高效。一、new创建类对象与不new区别下面是自己总结的一些关于new创建类对象特点:...转载 2019-04-13 11:57:11 · 135 阅读 · 0 评论 -
__stdcall,__cdecl,__fastcall的区别
三者区别一览表 __stdcall __cdecl __fastcall 参数传递方式 右->左压栈 右->左压栈 左边开始的两个不大于4字节(DWORD)的参数分别放在ECX和EDX寄存器,其余的参数仍旧自右向左压栈...原创 2019-04-13 12:12:07 · 272 阅读 · 0 评论 -
类模板 实现链表
模板类的声明和实现要放在同一个文件夹下才行,不然会提示找不到函数[cpp] view plaincopy#ifndef LinkList_HH #define LinkList_HH #include #include template typename type> struct Node转载 2015-01-28 13:32:40 · 838 阅读 · 0 评论