
C/C++
文章平均质量分 63
guhaoxin
破碎吧,镜花水月
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
VC中得到当前系统的时间和日期
得到时间的方法一般都是得到从1900年0点0分到现在的秒数,然后转为年月日时分秒的形式得到当前的时间(时分秒)。主要方法如下:1)使用CRT函数[code="C++"]char szCurrentDateTime[32]; time_t nowtime; struct tm* ptm; time(&nowtime); ptm = localtime(&n...原创 2009-08-18 19:19:05 · 129 阅读 · 0 评论 -
BMP文件格式
一.位图结构如下: ---- 一、BMP文件结构 ---- 1. BMP文件组成 ---- BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成。 ---- 2. BMP文件头 ---- BMP文件头数据结构含有BMP文件的类型、文件大小和位图起始位置等信息。 ---- 其结构定义如下: typedef struct tagBITMAPFILEHEADER{WO...原创 2010-01-08 22:15:35 · 98 阅读 · 0 评论 -
OpenCV基础数据结构
图像数据结构:1) IPL 图像: IplImage |-- int nChannels; // 色彩通道数(1,2,3,4) |-- int depth; // 象素色深: | // IPL_DEPTH_8U, IPL_DEPTH_8S, | // IP...原创 2010-01-08 21:56:04 · 120 阅读 · 0 评论 -
OpenCV基本知识
1、OpenCV概述 1) 什么是OpenCV 开源C/C++计算机视觉库. 面向实时应用进行优化. 跨操作系统/硬件/窗口管理器. 通用图像/视频载入、存储和获取. 由中、高层API构成. 为Intel®公司的 Integrated Performance Primitives (IPP) 提供了透明接口. 2) 特性: 图像数据操作 (分配,释放, 复制, ...原创 2010-01-08 21:31:00 · 182 阅读 · 0 评论 -
calloc(), malloc(), realloc(), free()
void *calloc(size_t nobj, size_t size);分配足够的内存给nobj个大小为size的对象组成的数组, 并返回指向所分配区域的第一个字节的指针;若内存不够,则返回NULL. 该空间的初始化大小为0字节.char *p = (char *) calloc(100, sizeof(char));void *malloc(size_t size);分配足够的...原创 2010-01-08 21:08:53 · 160 阅读 · 0 评论 -
善用GetLastError函数
在编程过程中,当程序出现错误,却又不知道错误的原因时,可以使用GetLastError函数,它可以帮助你快速找到出错的原因和语句。 可以直接使用GetLastError函数得到错误代码,然后查找MSDN找到代码对应的错误原因,也可使用下面函数直接把错误原因显示出来: void ShowErrMsg(){ TCHAR szBuf[80]; LPVOI...原创 2010-01-08 21:06:04 · 185 阅读 · 0 评论 -
MFC中的UpdateData()
UpdateData,顾名思义,是用来刷新数据的。UpdateData(TRUE) -- 刷新控件的值到对应的变量UpdateData(FALSE) -- 拷贝变量值到控件显示。例如窗口中用 DDX_Text(pDX, IDC_EDIT1, m_usercode); 将IDC_EDIT1编辑框控件与m_usercode变量做了关联,如果修改m_usercode之后要想对应控件显示更改,...原创 2010-01-08 21:03:48 · 306 阅读 · 0 评论 -
CInternetSession的简单使用例子
1. CInternetSession的简单使用CInternetSession session;CHttpFile *file = NULL;CString strURL = " http://www.google.com";CString strHtml = "”; //存放网页数据try{ file = (CHttpFile*)ses...原创 2010-01-08 20:58:49 · 591 阅读 · 0 评论 -
彻底理解C、C++、WIN32与COM中的字符串
C/C++中的字符串问题在网上的讲解一向非常含糊,存在各个层次的库混用、滥用的情况,尤其是宽字符与窄字符等问题很难找到有效的资料,本篇随笔分享一下我长期收集到的一些比较准确的资料以及据此得到的个人理解.C语言中的字符串C语言中提供了两种字符类型char和wchar_t,C语言使用字符数组来表示字符串,同时支持两种直接量写法:"abcd"和 L"abcd" 来表示字符串常量文字量,C语言允许...原创 2010-01-08 20:37:49 · 148 阅读 · 0 评论 -
Unicode下wstring(wchar_t*)和string(char*)互相转换
#include<string>using namespace std;//将string转换成wstringwstring string2wstring(string str){ wstring result; //获取缓冲区大小,并申请空间,缓冲区大小按字符计算 int len = MultiByteToWideChar(CP_ACP, 0, str...原创 2010-01-08 14:46:47 · 1271 阅读 · 1 评论 -
《Flash的UI启动画面》笔记
ActiveX一般以.OCX或者.DLL文件格式发布,可以使用VC附带的工具来注册某个控件。步骤如下:在VC的Tools菜单下启动ActiveX Control Test Container;在ActiveX Control Test Container里打开菜单File\Register Controls...;弹出窗口Register Control显示系统中已注册的所有Activ...原创 2010-01-04 20:59:34 · 108 阅读 · 0 评论 -
《基于ActiveX控件的图象采集系统》笔记
1) ActiveX控件时微软提供给广大用户把计算机桌面与Internet及大量资源集成起来的技术。它可以基于COM服务器进行操作,并且可以嵌入到包容器宿主应用程序中。 2) 由于ActiveX控件与开发平台无关,因此,在一种编程语言上开发的ActiveX控件可以无需修改即可在另一种编程语言中使用,其效果如同使用Windows通用控件一样。 3) 用户要把自己编写的ActiveX控...原创 2010-01-04 20:28:24 · 132 阅读 · 0 评论 -
《ActiveX控件在网络视频监控系统中的应用》笔记
1) 基于Web的B/S模式的网络视频监控系统,客户端只需通过浏览器下载包含ActiveX控件的Web页面,通过调用ActiveX控件的方法和属性就可以实现与服务器的实时视频监控交互。 2) 基于B/S模式的视频监控系统,可以将视频采集、传输以及播放做成ActiveX控件,从而能够嵌入Web页中,为Web页提供更加丰富的内容。 3) ActiveX控件有自己的属性和方法,属性反映了...原创 2010-01-04 20:03:01 · 179 阅读 · 0 评论 -
C++字符串完全指引之一
引言 毫无疑问,我们都看到过像 TCHAR, std::string, BSTR 等各种各样的字符串类型,还有那些以 _tcs 开头的奇怪的宏。你也许正在盯着显示器发愁。本指引将总结引进各种字符类型的目的,展示一些简单的用法,并告诉您在必要时,如何实现各种字符串类型之间的转换。 在第一部分,我们将介绍3种字符编码类型。了解各种编码模式的工作方式是很重要的事情。即使你已经知道一个字符串...原创 2010-01-08 22:53:57 · 121 阅读 · 0 评论 -
C++字符串完全指引之二
引言 因为C语言风格的字符串容易出错且不易管理,黑客们甚至利用可能存在的缓冲区溢出bug把C语言风格的字符串作为攻击目标,所以出现了很多字符串封装类。不幸的是,在某些场合下我们不知道该使用哪个字符串类,也不知道怎样把一个C风格的字符串转换成一个字符串封装类。 这篇文章将介绍所有在Win32 API, MFC, STL, WTL 和 Visual C++ 运行库中出现的字符串类型。我...原创 2010-01-09 16:16:48 · 114 阅读 · 0 评论 -
50个C/C++源代码网站
C/C++是最主要的编程语言。这里列出了50名优秀网站和网页清单,这些网站提供c/c++源代码。这份清单提供了源代码的链接以及它们的小说明。我已尽力包括最佳的C/C++源代码的网站。这不是一个完整的清单,您有建议可以联系我,我将欢迎您的建议,以进一步加强这方面的清单。 1、http://snippets.dzone.com/tag/c/ --数以千计的有用的C语言源代码片段 2、http://ww...原创 2010-01-30 13:01:34 · 276 阅读 · 0 评论 -
《Effective C++》条款34: 将文件间的编译依赖性降至最低
假设某一天你打开自己的C++程序代码,然后对某个类的实现做了小小的改动。提醒你,改动的不是接口,而是类的实现,也就是说,只是细节部分。然后你准备重新生成程序,心想,编译和链接应该只会花几秒种。毕竟,只是改动了一个类嘛!于是你点击了一下"Rebuild",或输入make(或其它类似命令)。然而,等待你的是惊愕,接着是痛苦。因为你发现,整个世界都在被重新编译、重新链接! 当这一切发生时,你难道...原创 2010-01-29 21:04:50 · 197 阅读 · 0 评论 -
QHttp
QHttp是Qt所提供有关网络的高阶API,可以协助我们进行HTTP协议的进行,QHttp发出请求时是非同步的,请求的过程中会发出相关的Signal,我们可以用Slot来接收这些Signal,并进行相关的处理。 以下先示范一个最基本的QHttp使用,程序将设计一个HttpGet类: HttpGet.h#ifndef HTTPGET_H#define HTTPGET_H...原创 2010-01-26 17:06:30 · 513 阅读 · 0 评论 -
VC屏蔽Enter和ESC退出程序
重载PreTranslateMessage函数屏蔽回车和ESC的消息:BOOL C***Dlg::PreTranslateMessage(MSG* pMsg) { if(WM_KEYDOWN == pMsg->message ) { UINT nKey = (int) pMsg->wParam; if( VK_RET...原创 2010-01-15 21:51:57 · 135 阅读 · 0 评论 -
《Effective C++》条款22:尽量用"传引用"代替"传值"
c语言中,什么都是通过传值来实现的,c++继承了这一传统并将它作为默认方式。除非明确指定,函数的形参总是通过“实参的拷贝”来初始化的,函数的调用者得到的也是函数返回值的拷贝。正如我在本书的导言中所指出的,“通过值来传递一个对象”的具体含义是由这个对象的类的拷贝构造函数定义的。这使得传值成为一种非常昂贵的操作。例如,看下面这个(只是假想的)类的结构:class person {publi...原创 2010-01-13 11:15:12 · 152 阅读 · 0 评论 -
《高质量C++/C 编程指南》之 内存耗尽怎么办
如果在申请动态内存时找不到足够大的内存块,malloc和new将返回NULL指针,宣告内存申请失败。通常有三种方式处理“内存耗尽”问题。(1)判断指针是否为NULL,如果是则马上用return语句终止本函数。例如:void Func(void){ A *a = new A; if(a == NULL) { return;...原创 2010-01-12 14:20:29 · 195 阅读 · 0 评论 -
《高质量C++/C 编程指南》之 常见的内存错误及其对策
发生内存错误是件非常麻烦的事情。编译器不能自动发现这些错误,通常是在程序运行时才能捕捉到。而这些错误大多没有明显的症状,时隐时现,增加了改错的难度。有时用户怒气冲冲地把你找来,程序却没有发生任何问题,你一走,错误又发作了。 常见的内存错误及其对策如下: u 内存分配未成功,却使用了它。编程新手常犯这种错误,因为他们没有意识到内存分配会不成功。常用解决办法是,在...原创 2010-01-12 14:10:53 · 141 阅读 · 0 评论 -
《高质量C++/C 编程指南》之 有了malloc/free为什么还要new/delete
malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。 对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数...原创 2010-01-12 13:33:17 · 142 阅读 · 0 评论 -
《高质量C++/C 编程指南》之 free和delete把指针怎么啦?
别看free和delete的名字恶狠狠的(尤其是delete),它们只是把指针所指的内存给释放掉,但并没有把指针本身干掉。用调试器跟踪示例7-5,发现指针p被free以后其地址仍然不变(非NULL),只是该地址对应的内存是垃圾,p成了“野指针”。如果此时不把p设置为NULL,会让人误以为p是个合法的指针。 如果程序比较长,我们有时记不住p所指的内存是否已经被释放,在继续使用p之前,通常...原创 2010-01-12 11:30:51 · 155 阅读 · 0 评论 -
《高质量C++/C 编程指南》之 杜绝"野指针"
“野指针”不是NULL指针,是指向“垃圾”内存的指针。人们一般不会错用NULL指针,因为用if语句很容易判断。但是“野指针”是很危险的,if语句对它不起作用。 “野指针”的成因主要有两种: 1 指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内...原创 2010-01-12 11:27:33 · 152 阅读 · 0 评论 -
《Effective C++》条款14: 确定基类有虚析构函数
有时,一个类想跟踪它有多少个对象存在。一个简单的方法是创建一个静态类成员来统计对象的个数。这个成员被初始化为0,在构造函数里加1,析构函数里减1。(条款m26里说明了如何把这种方法封装起来以便很容易地添加到任何类中,“my article on counting objects”提供了对这个技术的另外一些改进)设想在一个军事应用程序里,有一个表示敌人目标的类:class enemytarg...原创 2010-01-12 11:18:35 · 119 阅读 · 0 评论 -
数组名不完全等于指针
指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。于是乎,很多程序设计者就被搞糊涂了。 魔幻数组名 请看程序(本文程序在WIN32平台下编译): #include <iostream.h>int main(int argc, char* argv[]) { char str[10]; char *pStr...原创 2010-01-10 19:12:36 · 183 阅读 · 0 评论 -
DirectShow中的视频捕捉之四
如何捕捉视频流并保存到文件(Capture video to File)1 将视频流保存到AVI文件AVI Mux filter接收从capture pin过来的视频流,然后将其打包成AVI流。音频流也可以连接到AVI Mux Filter上,这样mux filter就将视频流和视频流合成AVI流。File writer将AVI流写入到文件中。可以像下面这样构建graph图IBaseF...原创 2010-01-04 16:34:48 · 310 阅读 · 0 评论 -
DirectShow中的视频捕捉之三
为了创建可以预览视频的graph,可以调用下面的代码:ICaptureGraphBuilder2 *pBuild; //Capture Graph Builder//Initialize pBuild(not shown)...IBaseFilter *pCap; //Video capture filterhr = pBuild->RenderStre...原创 2010-01-04 16:05:43 · 145 阅读 · 0 评论 -
C++的可移植性和跨平台开发[2]--语法
目前还有相当一部分开发人员在使用老式编译器干活,这些老式编译器可能对C++98支持不够。因此,当你的代码移植到这些老式的编译器上时,可能会碰到一些稀奇古怪的问题(包括编译出错和运行时错误)。下面这些注意事项有助于你绕过这些问题。 强调一下,后面提到的好几个条款都是通过回避C++的新语法来保证移植性。如果你用的是新式编译器,那么你可以不理会这些条款。 ★小心for循环变量的作用域(不支持新...原创 2009-12-18 21:19:03 · 159 阅读 · 0 评论 -
C++的可移植性和跨平台开发[1]--编译器
在跨平台的开发过程中,很多问题都和编译器有关。因此我们先来聊聊编译器相关的问题。 ★编译器的选择 首先,GCC是优先要考虑支持的,因为几乎所有操作系统平台都有GCC可用。它基本上成了一个通用的编译器了。如果你的代码在A平台的GCC能够编译通过,之后拿到B平台用类似版本的GCC编译,一般也不会有太大问题。因此GCC是肯定要考虑支持的。 其次,要考虑是否支持本地编译...原创 2009-12-18 21:13:46 · 158 阅读 · 0 评论 -
cin.eof()
cin.eof()返回流结束位,如:char gc;while(!cin.eof()) //直至按ctrl+z键退出!控制台窗口中,用ctrl+z来模拟文件结束符{ cin>>gc; cout<<gc<<endl; } 相应的,在C中使用的是scanf,如int M, N;while(scanf("%d%d", &...原创 2009-12-17 17:36:21 · 5783 阅读 · 0 评论 -
理解VC工程文件类型
Visual C++作为一种程序设计语言,它同时也是一个集成开发工具,提供了软件代码自动生成和可视化的资源编辑功能。在使用Visual C++开发应用程序的过程中,系统为我们生成了大量的各种类型的文件,在本节中将要详细介绍Visual C++中这些不同类型的文件分别起到什么样的作用,在此基础上对Visual C++如何管理应用程序所用到的各种文件有一个全面的认识。*.dsw 为工作空间文件(Wor...原创 2009-12-13 10:21:58 · 107 阅读 · 0 评论 -
c++强制类型转换:dynamic_cast、const_cast 、static_cast、reinterpret_cast
dynamic_cast: 通常在基类和派生类之间转换时使用const_cast: 主要针对const和volatile的转换static_cast: 一般的转换(no run-time check)通常,如果你不知道该用哪个,就用这个。 reinterpret_cast: 用于进行没有任何关联之间的转换,比如一个字符指针转换为一个整形数。1)static_cast<T*...原创 2009-12-13 10:05:04 · 110 阅读 · 0 评论 -
C++中二维数组的动态创建于处理(zzl)
C++中用new动态创建二维数组的格式一般是这样:TYPE (*p)[N] = new TYPE [][N];其中,TYPE是某种类型,N是二维数组的列数。采用这种格式,列数必须指出,而行数无需指定。在这里,p的类型是TYPE*[N],即是指向一个有N列元素数组的指针。还有一种方法,可以不指定数组的列数:int **p;p = new int*[10]; //注意,int*[...原创 2009-12-11 17:12:54 · 105 阅读 · 0 评论 -
C++中的FILL和MEMSET(zzl)
fill 的头文件是<iostream> 命名空间是std;示范代码:#include<iostream>using namespace std;int main(){ char s[100]; fill(s,s+100,'a'); for(int i=0;i<100;i++) co...原创 2009-12-11 17:07:33 · 193 阅读 · 0 评论 -
SDK和MFC的区别
SDK 就是Software Development Kit 软件开发包MFC 就是Microsoft Foundation Classes 微软函数类库MFC是对API函数的封装,也算是vc里的SDK 用VC编写Windows程序有两种:1. Windwos c方式(SDK),2.C++方式:即对SDK函数进行包装,如VC的MFC,BCB的OWL等。SDK编程就是直接调用Windows的AP...原创 2009-12-07 21:32:54 · 194 阅读 · 0 评论 -
C++异常机制的实现方式和开销分析
本文链接:http://hi.chinaunix.net/?uid-693307-action-viewspace-itemid-12080在我几年前开始写《C++编码规范与指导》一文时,就已经规划着要加入这样一篇讨论 C++ 异常机制的文章了。没想到时隔几年以后才有机会把这个尾巴补完 :-)。还 是那句开场白:“在恰当的场合使用恰当的特性” 对每个称职的 C++ 程序员来说都是一个基本标准。想要...原创 2009-12-07 15:37:38 · 105 阅读 · 0 评论 -
main中调用dll中的函数,F10单步到main的右大口号时出现user breakpoint called...
在dll中输出了一个包含string类子对象的类,在DEBUG主工程中只要调用了string参数的成员函数,则main退出时都有那个错误;但是RRLEASE工程又是好的。 解决办法:主工程和DLL工程的都设置为同样的DEBUG Multithreaded DLL或Mutithreaded DLL,project-->settings-->c/c++标签页中的category下拉筐中选c...2010-03-09 18:42:21 · 251 阅读 · 0 评论 -
VC中链接动态链接库的方法
方法一:windows提供了一套函数,用于加载动态链接库中的符号(函数和变量),调用这些函数去加载: 1. HINSTANCE LoadLibrary( LPCTSTR lpLibFileName); 2. FARPROC GetProcAddress( HMODULE hModule, LPCWSTR lpProcName); 3. BOOL FreeLibra...原创 2010-03-06 17:17:27 · 258 阅读 · 0 评论