C++
小龙王2010
加我微信 chinaitlee (昵称:小玩子君) 可免费协助博文答疑 和下载资料, 权当交个盆友
展开
-
c++学习书籍推荐
以下是我个人认为值得推荐之书:一.c++程序员看的书://------------------------------------------------------------// 入门:// Lippman的书就是经典!//------------------------------------------------------------《c++ prime转载 2013-09-09 09:46:31 · 943 阅读 · 0 评论 -
获取TCHAR类型字符串长度
项目的字符集被设置为Unicode字符集时,使用Window API经常性会遇到获取Unicode字符串的长度,如下所示:下面方法是获取系统目录,并将系统目录写入到文件中保存,其中WriteFile方法第三个参数要传入TCHAR类型的字符串长度。DWORD WriteSystemInfo(){ TCHAR szSystemDir[MAX_PATH]; //获取系统目录 Ge转载 2013-08-28 02:38:24 · 9418 阅读 · 0 评论 -
FormatMessage的用法
根据一个错误码返回一个错误讯息DWORD FormatMessage( DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, LPTSTR lpBuffer, DWORD nSize, va_list* Arguments转载 2013-08-16 10:51:09 · 1304 阅读 · 0 评论 -
FormatMessage函数使用详解
FormatMessage函数 在《windows核心编程》中第一个示例便是它的使用。这个函数我用了几次之后终于明白它的用法;这个函数是用来格式化消息字符串,就是处理消息资源的。消息资源是由mc.exe编译的,详细请在msdn中搜索mc.exe。 先来看下它的函数原型 DWORD WINAPI FormatMessage( __in DW原创 2013-08-15 21:39:29 · 1694 阅读 · 0 评论 -
FormatMessage 使用详解
本文翻译自MSDN FormatMessage函数的功能是格式化一个消息字符串。函数需要一个消息定义(message definition)作为输入。这个消息定义可以通过一个缓冲区或一个已经加载了的消息资源表模块传入本函数。调用者还可以通过搜索系统消息资源表来传入这个消息定义。FormatMessage函数在一个消息资源表中是通过一个消息标识符和一个语言标识符来找到一个消息定义。函数如果被调用翻译 2013-08-15 20:55:53 · 9025 阅读 · 0 评论 -
GetLastError 使用介绍
GetLastError返回的值通过在api函数中调用SetLastError或SetLastErrorEx设置。函数并无必要设置上一次错误信息,所以即使一次GetLastError调用返回的是零值,也不能担保函数已成功执行。只有在函数调用返回一个错误结果时,这个函数指出的错误结果才是有效的。通常,只有在函数返回一个错误结果,而且已知函数会设置GetLastError变量的前提下,才应访问GetL原创 2013-08-15 17:28:38 · 2173 阅读 · 0 评论 -
std::string 转LPCSTR
LPCTSTR不是一个类型,而是两种类型:LPCSTR和LPCWSTR其中之一。会根据你当前程序是否使用UNICODE字符集来变成那二者之一。如果使用UNICODE字符集,则LPCTSTR = LPCWSTR,否则LPCTSTR = LPCSTR。标准库的std::string转换成LPCSTR很简单:直接调用c_str()即可。例:std::string a="abc"; LPCSTR原创 2013-08-14 18:33:41 · 11583 阅读 · 0 评论 -
C++中int型与string型互相转换
int转stringint n = 0;std::stringstream ss;std::string str;ssss>>str;string转intstd::string str = "123";int n = atoi(str.c_str());#include "stdafx.h"#include string>#include转载 2013-08-14 18:32:37 · 1137 阅读 · 0 评论 -
GetLastError函数
在编程过程中,当程序出现错误,却又不知道错误的原因时,可以使用GetLastError函数,它可以帮助你快速找到出错的原因和语句。 可以直接使用GetLastError函数得到错误代码,然后查找MSDN找到代码对应的错误原因,也可使用下面函数直接把错误原因显示出来:void ShowErrMsg() { TCHAR szBuf[80]; LPVOI转载 2013-08-14 20:44:26 · 2960 阅读 · 0 评论 -
各种常见编码的转换算法
本文在对各种资料整理后详细介绍各种常见编码的转换算法。一、通用字符集(UCS)ISO/IEC 10646-1 [ISO-10646]定义了一种多于8比特字节的字符集,称作通用字符集(UCS),它包含了世界上大多数可书写的字符系统。已定义了两种多8比特字节编码,对每一个字符采用四个8比特字节编码的称为UCS-4,对每一个字符采用两个8比特字节编码的称为UCS-2。它们仅能够对UCS的前64K转载 2013-08-25 22:36:10 · 4976 阅读 · 0 评论 -
static的作用
在C++中,关键字static的作用是指示其修饰的变量内存分配区域是在静态区,也就是在程序开始运行时就分配的内存空间。在整个程序运行期间,此空间不会被系统回收。相对的,非static的变量会在函数运行完毕,或者对象销毁的时候被系统回收。 static定义的全局变量,只是在其定义的文件中可见,而在其它文件中却是不可见的。其内存是在静态区,并初始化为0。转载 2013-08-24 16:25:29 · 710 阅读 · 0 评论 -
const类型的成员函数内部如何改变成员变量
在C++中,由const修饰的成员函数的函数体内部,是不能够对成员变量进行修改的。这个特性被用来保证某些成员函数在实现过程中,避免由于程序员大意而对数据进行了错误的修改;同时也说明此成员函数是非修改性的。如只需要返回成员变量的成员函数就被声明为const类型(const的位置在函数定义参数列表之后) 推广开来,在const成员函数中也不能够调用非const的成员函数。这是因为非c转载 2013-08-24 16:22:22 · 1319 阅读 · 0 评论 -
LPTSTR、LPCSTR、LPCTSTR、LPSTR解析
1、ANSI(即MBCS):为多字节字符集,它是不定长表示世界文字的编码方式。ANSI表示英文字母时就和ASCII一样,但表示其他文字时就需要用多字节。2、Unicode:用两个字节表示一个字符的编码方式。比如字符'A'在ASCII下面用一个字节表示,而在Unicode下面用两个字节表示,其中高字节用“0”填充;函数'程'在ASCII下面用两个字节表示,而在Unicode下面也是用转载 2013-08-12 23:44:04 · 1127 阅读 · 0 评论 -
C/C++中const关键字详解 终结版
为什么使用const?采用符号常量写出的代码更容易维护;指针常常是边读边移动,而不是边写边移动;许多函数参数是只读不写的。const最常见用途是作为数组的界和switch分情况标号(也可以用枚举符代替),分类如下: 常变量: const 类型说明符 变量名 常引用: const 类型说明符 &引用名 常对象: 类名 const 对象名 常成员函数:转载 2013-08-24 16:27:32 · 819 阅读 · 0 评论 -
C++中 new/delete 概念和用法总结
学过C++的程序员都知道,new/delete是其管理内存的主要方法。与C语言相比,C++支持面向对象技术,因此在内存管理方面有所区别。 在C++中,数据对象(基本类型和复合类型)的创建包括两个部分:一是给数据对象分配足够的内存,二是内存进行数据的初始化。而C中,只有第一个分配内存的作用。并且,不仅仅是类,其它基本类型,如int型等,也是如此。例如: char*转载 2013-08-24 16:25:55 · 1035 阅读 · 0 评论 -
c/c++语言中的const详解
const关键字在C语言中就有了,并不是C++新引入的。C++只是扩展了const的含义和用法。所以,这里我们分成C语言中的const和C++语言中的const两个部分来介绍。注意到,一般来说,C++语言中可以兼容C语言的用法,若是有例外,会特意标明。 一. C语言中的const 简言之,const关键字是一个修饰字,表明所修饰的变量是只读的,即只读变量(readonl转载 2013-08-24 16:26:32 · 729 阅读 · 0 评论 -
const的使用方法
在全局定义 const float PI=3.1415926在类中定义class A{...A(int size);const int SIZE;};A::A(int size):SIZE(size){...}对参数和函数的定义(const只能修饰输入参数,不能修饰输出参数)const int x=1; 表示x的值是1,在程序中不能改转载 2013-08-24 16:17:48 · 871 阅读 · 0 评论 -
C++中如何计算两个区域是否有交集
判断两个矩形是否相交,可以自己写一个函数判断,也可以用你说的那个函数判断,但你说的那个函数主要的目的不是为了判断两个矩形是否相交。用该函数的方法: HRGN hRgn1 = CreateRectRgn(rc1.left, rc1.top, rc1.right, rc1.bottom); HRGN hRgn2 = CreateRectRgn(rc2.left, rc2.top转载 2013-08-24 03:18:30 · 4518 阅读 · 1 评论 -
VC++中多字节与宽字节转换
引用头文件:atlbase.h,其中USES_CONVERSION;是必须的,要不然 下面代码不能通过编译。// 宽字节与多字节转换,必须先使用USES_CONVERSION宏// 参见下面代码详细说明请查阅MSDNUSES_CONVERSION; printf("%s\n",W2A(L"果冻村长"));wprintf(L"%s\n",A2W("Jelly"));转载 2013-08-28 02:40:26 · 1053 阅读 · 0 评论 -
C++对象析构后调用虚方法和普通方法的区别
Person类say方法的原型如下:Cpp代码 void say(); void say(); Cpp代码 Person *p = new Person;//创建一个对象 delete p;//到这里对象被析构 p->say();//Person对象的say方法仍然可以调用 Person *p = ne转载 2013-08-28 02:42:12 · 1067 阅读 · 0 评论 -
共享收集的图像处理方面的一些资源和网站。
首先,共享在软件编写过程访问和收集到的一些与图像或优化有关的网站和博客。 http://blog.csdn.net/housisong/category/325273.aspx 图像处理的相关技术博客 http://www.cnblogs.com/xiaotie/category/145078.html 图像处理的转载 2013-09-02 22:55:38 · 977 阅读 · 0 评论 -
如何自学图像编程
现在,图像类信息越来越多了,对图像的编程需求也越来越多。图像类项目的特点是性价比高,单行代码的价格一般是普通的程序的10倍,每行代码能够卖几块钱。很多人把目光放在这个上面。刚才又有网友咨询,做图像要看些什么书?结合我的自学经验,写一篇博客谈谈这个问题。 需要先明确几个问题: (1)你的基础如何?做图形图像的话,对数学要求比较高,至少要有大学数学的基础——微积分、线性代数、概率统计和数转载 2013-09-02 22:53:30 · 1011 阅读 · 0 评论 -
关于typedef的用法总结
不管实在C还是C++代码中,typedef这个词都不少见,当然出现频率较高的还是在C代码中。typedef与#define有些相似,但更多的是不同,特别是在一些复杂的用法上,就完全不同了,看了网上一些C/C++的学习者的博客,其中有一篇关于typedef的总结还是很不错,由于总结的很好,我就不加修改的引用过来了,以下是引用的内容(红色部分是我自己写的内容)。用途一:定义一种类型的别名,而不转载 2013-09-01 23:47:24 · 654 阅读 · 0 评论 -
GDI/GDI+ 绘制网站流量统计报表 总结(4)
第四讲绘制矩形、圆和饼图在上一讲中,我们已经完成了第二个坐标系的绘制,现在需要给每个横坐标绘制上表示数据的矩形框首先需要在第一个横坐标上绘制一个RGB(78,207,205) 矩形区域在(480,170,526,316)的一个单色矩形。在这里将采用GDI的方法来绘制,那么绘制矩形包括边框和内部填充两部分,则涉及到画笔和画刷这两部分。那么首先调用CreateSolidBrush来创建原创 2013-08-18 23:28:12 · 1111 阅读 · 0 评论 -
TransparentBlt 与AlphaBlend
AlphaBlend实现透明效果,不过只能针对某块区域进行alpha操作,透明度可设。TransparentBlt可以针对某种颜色进行透明,不过透明度不可设。 AlphaBlend:BLENDFUNCTION bn;bn.AlphaFormat = 0;bn.BlendFlags = 0;bn.BlendOp = AC_SRC_OVER;bn.Sou转载 2013-08-18 23:31:22 · 1246 阅读 · 0 评论 -
AlphaBlend 详解
AlphaBlend 该函数显示拥有透明或半透明像素的位图。 SyntaxBOOL AlphaBlend( HDC hdcDest, int nXOriginDest, int nYOriginDest, int nWidthDest, int nHeightDest, HDC hdcSrc,转载 2013-08-18 23:30:09 · 9530 阅读 · 0 评论 -
GDI/GDI+ 绘制网站流量统计报表 总结(3)
第三讲:GDI+编程的基本概念GDI+是Windows XP中的一个子系统,它主要负责在显示屏幕和打印设备输出有关信息,它是一组通过C++类实现的应用程序编程接口。GDI+对以前的Windows版本中GDI进行了优化,并添加了许多新的功能。作为图形设备接口的GDI+使得应用程序开发人员在输出屏幕和打印机信息的时候无需考虑具体显示设备的细节,他们只需要调用GDI+库输出的类的一些方法既可以完原创 2013-08-18 17:50:50 · 1443 阅读 · 0 评论 -
c++关于windows窗体编程简单实例
Windows 操作系统提供了各种各样的函数,以方便我们开发windows应用程序,这些函数是windows操作系统提供给应用程序编程的接口(Appliaction Programming Interface),简称为API函数所有主要的Windows函数都是在Windows.h头文件中进行了声明。所谓的Win32 SDK(Software Development Kit)为软件开发包,是开发原创 2012-05-07 16:58:59 · 8723 阅读 · 0 评论 -
GDI/GDI+ 绘制网站流量统计报表 总结(2)
第二讲统计报表的背景,图形和文字的绘制WM_PAINT是在窗口被掩盖或重绘的时候调用,它负责的是窗口客户区的绘制。要绘制任何东西,必须要先获得HDC,那么在WM_PAINT这里可以通过调用BeginPaint()函数来返回与窗口关联的HDC,获取了HDC之后,就可以调用GDI或GDI+的方法或类来绘制图像图形了。在所有绘制图像图形的工作完成之后,在退出WM_PAINT消原创 2013-08-17 10:41:16 · 1342 阅读 · 0 评论 -
Ansi和Unicode字符串区别
1.1 使用字符串结构常常使用传统C语言的程序员比较喜欢用如下的方法定义和使用字符串: char *str = { “my first string” }; // ansi字符串 wchar_t *wstr = { L”my first string” }; // unicode字符串 size_t len = strlen(str);转载 2013-08-28 18:50:47 · 1644 阅读 · 0 评论 -
程序员应该知道的关于Windows API、CRT和STL二三事
1.本文编写目的 本文是为了帮助一些人弄清一些关于Windows API, C运行时程序库(CRT), 和标准C++库(STL)的基本概念。有很多人甚至是有经验的程序员在这些概念上是含糊不清的甚至是有错误观点。如果你想知道他们是在什么基础上实现的并且一直没时间弄清楚这些概念,请花费点时间阅读下本文。2. 基本概念 下面这幅图代表了WinAPI、CRT和STL三者之间的关系。转载 2013-08-28 15:09:04 · 939 阅读 · 0 评论 -
GDI/GDI+ 绘制网站流量统计报表 总结(1)
第一讲:GDI编程的基本概念图形设备接口:是一个抽象的接口,是一个关于图形显示的函数库。通过这个接口可以实现对图形的颜色、线条的粗细等属性的控制。通过GDI,可以进行设备无关性操作。所有的GDI函数中必须带有设备环境这个参数。设备环境DC(Device Context 又称为设备上下文,也称为设备描述表),它是一个关于如何绘制突袭的方法的集合,它既可以绘制各种图形,也可以确定在应用窗口中绘原创 2013-08-16 16:13:14 · 1104 阅读 · 0 评论 -
GetLastError()和FormatMessage()
在Win32编程时不免会出现错误,最头痛的就是不知道错哪里,为什么会错,微软同样想到这个事情,为此,提供了一个不错的函数GetLastError(),此函数可以返回上一次出错的错误代码。比如下面这段代码:#includeLRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)转载 2013-08-16 10:31:00 · 1693 阅读 · 0 评论 -
Winsock网络编程快速入门
一、基本知识 1、Winsock,一种标准API,一种网络编程接口,用于两个或多个应用程序(或进程)之间通过网络进行数据通信。具有两个版本:Winsock 1:Windows CE平台支持。头文件:WinSock.h库:wsock32.lib Winsock 2:部分平台如Windows CE貌似不支持。通过前缀WSA可以区别于Winsock 1版本。个别函数如转载 2013-08-15 22:26:53 · 896 阅读 · 0 评论 -
Sizeof与Strlen的区别与联系
一、sizeof sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。 它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。 由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实际上,用sizeof来返回类型以及静态分配的对象、结构或数组所占的转载 2013-08-28 07:31:37 · 649 阅读 · 0 评论 -
C++ 静态变量之为什么只初始化一次
以下内容由在论坛中讨论而成,在此总结一下:首先问题来自这个函数:[cpp]int fun() { static int i=0; i++; return i; } 当这个函数被反复调用时,i的值是会一直加的,也就是静态变量只被初始化了一次.我对此产生了疑惑.不知道大家有没有.当改为:[cpp] int fun() {转载 2013-08-28 07:29:23 · 1540 阅读 · 0 评论 -
tchar char 字符 和 字符数组 字符串操作
如下操作实在类中定义的:TCHAR m_illegal_chars[13];TCHAR temp[13] = {_T('|'), _T('*'), _T('\\'), _T(':'), _T(';'), _T('>'), _T(' _T('?'), _T('"'), _T(','), _T('='), _T('`') };转载 2013-08-28 07:27:08 · 2795 阅读 · 0 评论 -
C++位运算符
C++源自C,在提供高级语言便利的同时,也继承了C在硬件编程方面的功能。因此适用于编写设备驱动和嵌入式大代码。 C++/C 提供位逻辑运算符和移位运算符。二者只能用于整形和字符型。位运算符是对每位进行操作而不影响左右两位,这有别于常规运算符(&& || !)是将整个数进行操作的。----------------------------------------------------转载 2013-08-10 21:34:22 · 805 阅读 · 0 评论 -
C++中6中位运算符
1按位与(&)按位与操作的作用是将两个操作数对应的每一位分别进行逻辑与操作。例如计算3&5,计算过程如图(a)使用按位与操作可以将操作数中的若干位置0(其它位不变),或者取操作数中的若干指定位。请看下面的两个例子:i下列语句将char型变量a的最低位置0a = a & 0376 (注:这里的0376是八进制哈, 0376化为二进制:000 011 111 110 则其二进制原创 2013-08-10 21:26:53 · 1465 阅读 · 0 评论 -
c++中冒号(:)和双冒号(::)的用法和c/c++ 位域结构体
1.冒号(:)用法(1)表示结构体内 位域的定义(即该变量占几个bit空间)typedef struct _XXX{ unsigned char a:4; unsigned char c;}XXX;(2)构造函数后面的冒号起分割作用,是类给成员变量赋值的方法,初始化列表,更适用于成员变量的常量const型。转载 2013-05-18 02:26:09 · 1149 阅读 · 0 评论