C/C++
文章平均质量分 73
南极圈
唯算法和数据结构是程序的灵魂
展开
-
const关键字的用法
被const修饰的成员变量有以下几个特点:1、只能被读2,、必须初始化3、在另一文件中引用const常量 extern const int i;4,、能够进行类型安全检查5、只分配一次内存(和define关键字修饰的变量的区别) const char s[] = "abc" //只分配一次 不像def原创 2017-07-21 20:58:21 · 252 阅读 · 0 评论 -
获取exe所在文件的路径
CString LG_GetFilePathName() { wchar_t szPath[MAX_PATH + 1] = { 0 }; ::GetModuleFileName(NULL, szPath, MAX_PATH + 1); *_tcsrchr(szPath, '\\') = 0; CString strPath(szPath); return strPath原创 2017-11-03 16:59:39 · 1220 阅读 · 0 评论 -
wstring转string,string转wstring
wstring转string // 使用CRT库的wcstombs()函数将wstring转string,平台无关,需设定locale,这种方法可以兼容中文 string WString2String(wstring& ws) { string curLocale = setlocale(LC_ALL, NULL); setlocale(LC_ALL, "chs"); con原创 2017-11-01 09:36:09 · 976 阅读 · 0 评论 -
获取电脑的MAC地址
#pragma comment(lib,"Netapi32.lib") //网卡结构 typedef struct tagASTAT { ADAPTER_STATUS adapt; NAME_BUFFER NameBuff[30]; }ASTAT, *LPASTAT; //存储网卡的MAC地址的结构 typedef struct tagMAC_A原创 2017-11-01 09:14:25 · 1096 阅读 · 0 评论 -
CString转string、string转CString
CString转string // CString to String string CString2String(CString strIn) { int nSize = ::WideCharToMultiByte(CP_ACP, 0, strIn, -1, NULL, 0, NULL, 0); char* pChar = (char*)malloc((nSize + 1) *原创 2017-11-01 09:27:15 · 711 阅读 · 0 评论 -
boost库中线程的使用
线程一直被用来当并发地执行多个函数,开发人员现在不得不仔细地构建应用来支持这种并发。 多线程编程知识也因此在多核系统时代变得越来越重要。下面将介绍C++ Boost库 Boost.Thread,它可以开发独立于平台的多线程应用程序。在这个库最重要的一个类就是 boost::thread,它是在 boost/thread.hpp 里定义的,用来创建一个新线程。下面的示原创 2017-08-31 11:23:29 · 789 阅读 · 1 评论 -
如何判断IP地址是否合法
如何判断一个IP地址是否合法,以及如何判断一个IP地址是否在给定的IP地址范围内,废话不多说,上代码判断IP地址是否合法:bool isValidIP(char *ip){ if (ip == NULL) return false; char temp[4]; int count = 0; while (true) { int index = 0;原创 2017-09-22 09:53:15 · 9090 阅读 · 0 评论 -
获取一个ip地址所经过的所有网关
#include #include #pragma comment(lib,"iphlpapi.lib")vector GetAllTraceRouterIpAddr(string strTraceIp)//输入当前ip地址{ WSADATA wsa; vector vecRouterIpAddr; if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0原创 2017-09-30 15:25:29 · 2860 阅读 · 0 评论 -
C++如何读写注册表
1.如何向注册表中写值//写入注册表为DWORD类型bool SetRegValue(LPCTSTR lpSubKey, LPCTSTR lpValueName, DWORD dwValueKey){ bool bRet = false; HKEY hKey; DWORD dwDispoistion = REG_OPENED_EXISTING_KEY; if (ERROR_SUC原创 2017-09-14 20:21:52 · 1693 阅读 · 0 评论 -
static关键字的作用以及静态成员函数与非静态成员函数的区别
静态成员函数与非静态成员函数的区别:静态成员可以互相访问,非静态成员函数可以访问静态成员函数,静态成员函数不能访问非静态成员函数this指针:this指针属于类的一个实例,不属于某个类;由于静态成员函数并不属于某一个对象,属于类;由于它没有this指针,不能用this调用静态成员函数,也决定了静态成员函数不能访问本类中的非静态成员原创 2017-08-24 20:35:51 · 393 阅读 · 0 评论 -
虚函数的作用
在某基类中申明为virtual的成员函数,并在一个或多个派生类中被重新定义,通过指向派生类的指针或引用,访问派生类中同名覆盖的成员函数。简单的说:那些被virtual关键字修饰的成员函数,就是虚函数。虚函数的作用,用专业术语来解释就是实现多态性面试1:除了指针能引起多态,还有什么能引起多态?这是面试的时候常问题目,引起多态方式有两种 :指针和引用面试2:重载,重写,覆盖原创 2017-07-28 15:09:19 · 1061 阅读 · 0 评论 -
C++中extern关键字的使用
在编写复杂程序时,会有许多文件,需要有在文件中分享代码的方法,例如,在一个文件中代码可能需要另一个文件中定义的变量,说白了也就是(分离式编译)。为了支持分离式编译,c++支持了将变量的定义和声明分开,即使用extern关键字,只对变量进行声明,如extern int a,变量a只声明未定义,在一个.h文件中声明一个全局变量,在其.cpp文件中定义此变量,在另一个文件中引用此变量,只需在.cpp原创 2017-08-18 14:53:08 · 257 阅读 · 0 评论 -
什么是线程同步与互斥,使用boost库实现线程同步
使用boost库实现线程的同步,下文主要讲解如何使用mutex,即互斥量来实现线程间的同步。在使用boost库实现线程同步之前,我们先了解一下下面的概念:对于互斥可以这样理解,线程A和线程B互斥访问某个资源则它们之间就会产个顺序问题——要么线程A等待线程B操作完毕,要么线程B等待线程操作完毕,这其实就是线程的同步了。因此同步包括互斥,互斥其实是一种特殊的同步。多原创 2017-08-18 09:47:00 · 440 阅读 · 0 评论 -
C++中指针和引用的区别
引用必须初始化,指针不必; 删除空指针是无害的,不能删除引用; 内存分配上,程序为指针变量分配内存区域,而引用不分配内存;(1)引用访问一个变量是直接访问, 而指针是间接访问; (2)引用是一个变量的别名,本身不单独分配自己的内存空间, 而指针有自己的内存空间,是实体 (3)引用在开始就绑定到了一个内存空间(开始必须赋初值),所有他只是该内存空间的别名,不能改成其他的;当原创 2017-08-09 17:16:43 · 266 阅读 · 0 评论 -
map的详细使用
一. 声明二. 插入操作2.1 使用[ ]进行单个插入2.1 使用insert进行单个和多个插入三. 取值四. 容量查询五. 迭代器六. 删除交换6.1 删除6.2 交换七. 顺序比较八. 查找九. 操作符C++中map提供的是一种键值对容器,...转载 2018-07-19 17:07:51 · 324 阅读 · 1 评论