C++
文章平均质量分 55
Andy-Action-Now
这个作者很懒,什么都没留下…
展开
-
如何使用SOCKET 发送HTTP1.1 GET POST请求包
如何使用SOCKET 发送HTTP1.1 GET POST请求包HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的。HTTP有两类报文:请求报文和响应报文。请求报文一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成,下图给出了请求报文的一般格式。 (1)请求行请求行由请转载 2012-12-26 17:00:57 · 581 阅读 · 0 评论 -
static_cast
用法:static_cast ( expression ) 该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法: ①用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换。 进行上行转换(把派生类的指针或引用转换成基类表示)是安全的; 进行下行转换(把基类指针或引用转换成派生类表示转载 2012-12-26 08:25:59 · 423 阅读 · 0 评论 -
c++中 strlen
注意:在C语言的头文件中#include中有一个函数:size_t strlen(char const *s) ;但是在使用的时候:这两个IF使用有很大的差别if( strlen(a) >= strlen(b) )if( strlen(a) - strlen(b) >= 0)转载 2012-12-23 21:34:40 · 2562 阅读 · 1 评论 -
C,C++宏中#与##的讲解
文中__FILE__与示例1可以参见《使用ANSI C and Microsoft C++中常用的预定义宏》宏中的#的功能是将其后面的宏参数进行字符串化操作(Stringizing operator),简单说就是在它引用的宏变量的左右各加上一个双引号。如定义好#define STRING(x) #x之后,下面二条语句就等价。 char *pChar = "hello";原创 2012-12-24 13:06:28 · 591 阅读 · 0 评论 -
双指针的作用和用法
双指针多用于指针交换,可以避免数据复制,提升系统的性能,同时还可以让函数修改指针,例如扩充其大小,指向等一般指针的指针用作参数,大多用在需要函数改变指针(重新引用变量)而又不能通过返回值传递(例如返回值用于传递其他结果)时。为了能完全解决动态内存传递的问题,先回顾一下内存管理的知识要点.(1)内存分配方式有三种:●从静态存储区域分配。内存在程式编译的时候就已分配好,这块内存在程式的转载 2012-12-26 09:51:56 · 3226 阅读 · 0 评论 -
虚拟继承 与 普通继承区别 总结
c++ 重载 覆盖 隐藏的区别和执行方式 成员函数被重载的特征(1)相同的范围(在同一个类中); (2)函数名字相同; (3)参数不同; (4)virtual 关键字可有可无。 覆盖是指派生类函数覆盖基类函数,特征是(1)不同的范围(分别位于派生类与基类); (2)函数名字相同; (3)参数相同; (4)基类函数必须有virtual 关键字。 “隐原创 2012-12-26 08:30:53 · 1348 阅读 · 0 评论 -
UTF8 CString 互转问题和代码
//把utf8转成unicode,再转成cstringvoid ConvertUTF8ToANSI(char* strUTF8,CString &strANSI) //{ int nLen = ::MultiByteToWideChar(CP_UTF8,MB_ERR_INVALID_CHARS,(LPCTSTR)strUTF8,-1,NULL,0); //返回需要的u翻译 2012-12-27 12:26:15 · 1145 阅读 · 0 评论 -
C文件读写(转载)
-- C语言的文件操作文件的基本概念 所谓“文件”是指一组相关数据的有序集合。 这个数据集有一个名称,叫做文件名。实际上在前面的各章中我们已经多次使用了文件,例如源程序文件、目标文件、可执行文件、库文件 (头文件)等。文件通常是驻留在外部介质(如磁盘等)上的,在使用时才调入内存中来。从不同的角度可对文件作不同的分类。从用户的角度看,文件可分为普通文件和设备文件两种。 普通文件是转载 2013-01-07 10:21:17 · 607 阅读 · 0 评论 -
VC定义的三种类型DLL有什么区别?
VC定义的三种类型DLL有什么区别?微软的Visual C++支持三种DLL,它们分别是Non-MFC Dll(非MFC动态库)、Regular Dll(常规DLL)、Extension Dll(扩展DLL)。Non-MFC DLL指的是不用MFC的类库结构,直接用C语言写的DLL,其导出的函数是标准的C接口,能被非MFC或MFC编写的应用程序所调用。Regular DLL:和转载 2013-01-12 10:00:20 · 761 阅读 · 0 评论 -
http://blog.csdn.net/face_look/article/details/7719093
一、__declspec(dllexport): 将一个函数声名为导出函数,就是说这个函数要被其他程序调用,即作为DLL的一个对外函数接口。 通常它和extern "C" 合用,形式如下:extern "C"{__declspec(dllexport) RETURN_TYPE FUNCTION(){}} 这是由于在转载 2013-01-12 09:48:46 · 365 阅读 · 0 评论 -
不进位计算器
// checksum.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #include #include typedef unsigned char BYTE;typedef struct num{BYTE first;BY原创 2013-02-02 11:11:45 · 675 阅读 · 0 评论 -
typedef
不管实在C还是C++代码中,typedef这个词都不少见,当然出现频率较高的还是在C代码中。typedef与#define有些相似,但更多的是不同,特别是在一些复杂的用法上,就完全不同了,看了网上一些C/C++的学习者的博客,其中有一篇关于typedef的总结还是很不错,由于总结的很好,我就不加修改的引用过来了,以下是引用的内容(红色部分是我自己写的内容)。用途一:定义一种类型的别转载 2013-02-19 10:10:11 · 442 阅读 · 0 评论 -
C/C++中字符指针数组及指向指针的指针的含义
就指向指针的指针,很早以前在说指针的时候说过,但后来发现很多人还是比较难以理解,这一次我们再次仔细说一说指向指针的指针。 先看下面的代码,注意看代码中的注解:#include iostream> #include string> using namespace std; void print_char(char* array[],int len);//函数原转载 2013-03-04 18:41:13 · 450 阅读 · 0 评论 -
struct和typedef struct
分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student 于 { int a; }Stu;ypedef就必须用struct Student stu1;来声明) 这里的Stu实际上就是struct Stud是在声明变量的时候就可:Stu stu1;(转载 2013-02-26 12:53:30 · 472 阅读 · 0 评论 -
递归建立list
#include #include #include typedef struct Node{int data;Node *next; }*BiList,BiNode; BiNode* phead=NULL;int flag=0;BiList CreateListByRecursion(BiList T) {char ch;ch=getchar();i原创 2013-02-26 14:12:20 · 496 阅读 · 0 评论 -
list
#include #include struct Node{ int data; Node *next; }; Node * createList(){ int len=0; int iData=1; Node *phead=(Node*)malloc(sizeof(Node)); if (NULL==phead) { printf("内存分配失败!\n")原创 2013-02-26 11:49:56 · 505 阅读 · 0 评论 -
二维数组生成XML
#include #include #include using namespace std;typedef struct Project{ string strProjectCode; string strProjectName;}*pProjectList,ProjectItem;void vectorShow(vector vectorProjectL原创 2013-03-15 00:25:09 · 2130 阅读 · 0 评论 -
inline const #define
要点1.静态成员变量只能在类外初始化要点2.静态成员函数可以在类中定义,但不含this指针,因为它不属于任何特定对象要点3.尽量用const和inline而不用#define因为类的静态成员变量是所有实例共用的.所以得在类外初始化.如 [cpp] view plaincopyprint?class A { static int num; }转载 2013-03-27 09:47:12 · 820 阅读 · 0 评论 -
指针函数 与 函数指针区别
一、在学习arm过程中发现这“指针函数”与“函数指针”容易搞错,所以今天,我自己想一次把它搞清楚,找了一些资料,首先它们之间的定义:1、指针函数是指带指针的函数,即本质是一个函数。函数返回类型是某一类型的指针 类型标识符 *函数名(参数表) int *f(x,y); 首先它是一个函数,只不过这个函数的返回值是一个地址值转载 2013-06-04 19:54:14 · 610 阅读 · 0 评论 -
回调函数
回调函数就是那些自己写的,但是不是自己来调,而是给别人来掉的函数。消息响应函数就可以看成是回调函数,因为是让系统在合适的时候去调用。这不过消息响应函数就是为了处理消息的,所以就拿出来单做一类了。其实本质上就是回调函数。但是回调函数不是只有消息响应函数一种,比如在内核编程中,驱动程序就要提供一些回调函数,当一个设备的数据读写完成后,让系统调用这些回调函数来执行一些后续工作。回调函数赋予程序员这原创 2013-06-18 22:07:43 · 722 阅读 · 0 评论 -
DeviceIOcontrol 实战 1
Q 在NT/2000/XP中,我想用VC编写应用程序访问硬件设备,如获取磁盘参数、读写绝对扇区数据、测试光驱实际速度等,该从哪里入手呢?A 在NT/2000/XP中,应用程序可以通过API函数DeviceIoControl来实现对设备的访问—获取信息,发送命令,交换数据等。利用该接口函数向指定的设备驱动发送正确的控制码及数据,然后分析它的响应,就可以达到我们的目的。DeviceIo转载 2013-08-12 21:52:24 · 811 阅读 · 0 评论 -
指针 与 引用
需要注意的是,引用是对象的别名,所以引用与对象必须有着相同的特性。如const属性等等。具体介绍如下。若已知:int a =0; int b=0;const int c =0;int *p;const int *q = &c;1. 普通变量的引用:int &d = a;(正确,定义一个变量a的应用d)。int *&d = p;(正确,定义一个指针的引用d)。2. 常量的应用:第一种形式:int &转载 2013-08-15 11:13:13 · 653 阅读 · 0 评论 -
C++ 类模版 特化
C++类模板的三种特化By SmartPtr(http://www.cppblog.com/SmartPtr/) 说起C++的模板及模板特化, 相信很多人都很熟悉 ,但是说到模板特化的几种类型,相信了解的人就不是很多。我这里归纳了针对一个模板参数的类模板特化的几种类型, 一是特化为绝对类型; 二是特化为引用,指针类型;三是特化为另外一个类模板。 这里用一个简单的例子转载 2013-09-04 20:03:38 · 1008 阅读 · 1 评论 -
MFC 接收命令行 参数
LPTSTR str = GetCommandLine(); if (2 != __argc) { MessageBox(_T("This tool just used on win7 system\n\r Please input right parameter\n\r"),NULL,MB_OK); exit(1); } long result = CDisplayInf原创 2013-08-21 19:42:35 · 869 阅读 · 0 评论 -
WMI 例子
#define _WIN32_DCOM#include using namespace std;#include #include #pragma comment(lib,"wbemuuid.lib")int main(){ HRESULT hr; // initialize com library hr = CoInitializeEx(0, COINIT_MULTI原创 2013-05-14 17:13:52 · 1107 阅读 · 0 评论 -
disassambe c++ source code
int _tmain(int argc, _TCHAR* argv[]){00C413B0 push ebp 00C413B1 mov ebp,esp 00C413B3 sub esp,0CCh 00C413B9 push ebx 00C413BA push esi 00C41原创 2013-08-20 21:27:12 · 856 阅读 · 0 评论 -
uuid
#include#include#include#includechar *substring(char *dst,char *src,int len,int start){char *p=dst;char *q=src;int length=strlen(src)-1;if(start>=length||startif(len>length原创 2013-07-27 17:17:01 · 972 阅读 · 0 评论 -
c语言 字符串截取
/*========================================================子数整数源程序名 num.??? (pas,c,cpp)可执行文件名 num.exe输入文件名 num.in输出文件名 num.out对于一个五位数a1a2a3a4a5,可将其拆分为三个子数:sub1=a1a2a3sub2=a2a3a4sub3=a转载 2013-07-27 16:17:15 · 1947 阅读 · 0 评论 -
STDMETHOD
STDMETHOD_是一个宏,用于定义指定返回类型的接口方法,包含virtual关键字。可用于定义方法声明。#define STDMETHOD_(type,menthod) virtual type STDMETHODCALLTYPE menthod 例如: STDMETHOD_ (ULONG, release)()展开后就是 virtual ULONG STDMETHODCALLTYPE rel转载 2013-06-04 22:53:32 · 884 阅读 · 0 评论 -
Debug Assertion Failed! File:afxwin1.inl Line:22
如果是 dll 的问题:首先分析是哪个函数调用之后,出现 AfxGetResourceHandle()==NULL 的问题;然后, 如果这个 dll 是自己的 MFC 库,在输出函数的时候第一行,使用 AFX_xxx 的那个宏定义; 如果这个 dll 是第三方的,在调用前通过 AfxGetResourceHandle() 保存当前 HANDLE 值,在调用函数之后,调用 A转载 2013-05-27 15:15:15 · 2265 阅读 · 0 评论 -
MFC VS2008 常见 问题
1.VC2005:无法执行添加/移除操作,因为代码元素是只读的....多个解决办法最近在编程过程中偶尔会遇到这个错误, 非常烦人, 因为一旦添加事件处理函数就会弹出这个窗口解决方案:1、重启VC2、打开Resource.h文件看看 一看就知道了 有些定义重复了 可以手动改掉 保存 编辑器重新加载 。。。。。。。。3、关闭解决方案,删除ncb文件重新添加即可4、实在不行就手动转载 2013-09-03 15:28:45 · 960 阅读 · 0 评论 -
socket 编程基本步骤
sockets(套接字)编程有三种,流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM),原始套接字(SOCK_RAW);基于TCP的socket编程是采用的流式套接字。服务器端编程的步骤:1:加载套接字库,创建套接字(WSAStartup()/socket());2:绑定套接字到一个IP地址和一个端口上(bind());3:将套接字设置为监听转载 2013-09-03 10:26:04 · 3622 阅读 · 1 评论 -
重置vs2012 开发环境
重置vs2012 开发环境1、通过命令提示行工具进入VS安装目录下的Common7\IDE2、执行devenv.exe /setup /resetuserdata /resetsettings3、重启VS posted @ 2013-05-23 10:33 EasyPass 阅读(291) 评论(0) 编辑原创 2013-08-28 10:01:25 · 1236 阅读 · 0 评论 -
PreTranslateMessage作用和使用方法
PreTranslateMessage作用和使用方法 PreTranslateMessage是消息在送给TranslateMessage函数之前被调用的,绝大多数本窗口的消息都要通过这里,比较常用,当需要在MFC之前处理某些消息时,常常要在这里添加代码. MFC消息控制流最具特色的地方是CWnd类的虚拟函数PreTranslateMessage(),通过重载这个函数转载 2013-08-26 21:30:38 · 836 阅读 · 0 评论 -
Windows Event 的各个相关函数解释 及 简单例子一个
SetEvent 是设置信号为 有信号状态ReSetEvent 是设置信号为 无信号状态CreateEvent的第二个参数如果是TRUE,意思是你必须用SetEvent和ResetEvent来设置信号,如果为FALSE,则用WaitForSingleObject自动进入无信号状态。结束后用SetEvent重置为信号状态。OpenEvent可以打开一个先前已经创建好的Event,只要转载 2013-08-05 22:19:00 · 1494 阅读 · 0 评论 -
PostThreadMessage 例子
#include #include #include #include #define UM_MSG1 WM_USER+1#define UM_MSG2 WM_USER+2DWORD WINAPI Thread1(LPVOID para){ DWORD dwThreadId = *(DWORD *)para; DWORD i=0; TCHAR *p; char strTm转载 2013-06-10 15:23:45 · 1189 阅读 · 0 评论 -
typedef和typename关键字
1、类型说明typedef 类型说明的格式为: typedef 类型定义名; 类型说明只定义了一个数据类型的新名字而不是定义一种新的数据类型。定义名表示这个类型的新名字。 例如:用下面语句定义整型数的新名字: typedef int SIGNED_INT; 使用说明后, SIGNED_INT转载 2013-04-07 13:52:18 · 720 阅读 · 0 评论 -
C++ 实现简单的POST练习
// Socket1.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "Socket1.h"#include #ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char原创 2013-01-21 18:55:40 · 1329 阅读 · 0 评论 -
subsystem id
// SSID.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "XIO.h"#define PCI_CONFIG_ADDRESS_PORT 0x0CF8#define PCI_CONFIG_VALUE_PORT 0x0CFC#define VERSION_STRING "SSID.exe for KickStart-- Ve原创 2013-08-26 16:11:21 · 1503 阅读 · 0 评论 -
MFC 程序添加命令行 debug
一、建立MFC工程1、选择“MFC Application”,建立工程;2、向导中的“Application type”选择“Dialog based”;3、点击“Finish”完成向导;二、添加控制台调试窗口1、添加头文件:#include "conio.h"2、在OnInitDialog函数中添加如下代码:AllocConsol转载 2013-08-21 15:49:13 · 1174 阅读 · 0 评论