C++
MOKA
这个作者很懒,什么都没留下…
展开
-
C++代码收藏
[cpp] view plain copy class TypeInfo{ [cpp] view plain copy public: int id; const char* name; public: static const TypeInfo* get(int id){ return (转载 2016-05-20 00:34:05 · 333 阅读 · 0 评论 -
Visual C++操纵MS Word
使用VC编程来操纵Office。你可以实现诸如:视频教程'>word文件打印、传送数据到Word文档、发送E-MAIL、自动产生表格、excel数据统计、圆饼图,直方图显示、自动报表生成、播放幻灯、doc,txt,HTML,rtf文件转换、中文简繁体转换、拼音或笔画排序......只要是Office能够实现的功能,都可以在你写的程序中调用。仔细阅读下面的说明,并下载源文件进行参考,你就可以一步一步转载 2012-03-02 14:40:19 · 698 阅读 · 0 评论 -
c++操作word接口
注意事项:1多用Range,少用Selection,因为Word中,Selection对象只有一个。【1】开启word_ApplicationPtr word_app;HRESULT hr = word_app.CreateInstance("Word.Application", NULL); 【2】新建一个文档COleVariant vTrue((short)TRUE),vFal转载 2012-03-02 14:39:49 · 2824 阅读 · 0 评论 -
用C++生成WORD文档
参考的两个地址如下:用Visual C++操纵MS Word:http://www.cnblogs.com/scq2099yt/archive/2008/01/07/1028697.htmlMFC/VC++调用word进行报表制作:http://www.cnblogs.com/scq2099yt/archive/2008/01/07/1028717.html 其次,说说重点转载 2012-03-02 14:39:13 · 9381 阅读 · 0 评论 -
软件版本管理
版本控制比较普遍的 3 种命名格式 :一、 GNU 风格的版本号命名格式 :主版本号 . 子版本号 [. 修正版本号 [. 编译版本号 ]]英文对照 : Major_Version_Number.Minor_Version_Number[.Revision_Number[.Build_Number]]示例 : 1.2.1, 2.0, 5.0.0 build-13124二转载 2012-03-02 14:35:09 · 701 阅读 · 0 评论 -
C/C++排序小结
排序算法是一种基本并且常用的算法。由于实际工作中处理的数量巨大,所以排序算法对算法本身的速度要求很高。 而一般我们所谓的算法的性能主要是指算法的复杂度,一般用O方法来表示。在后面我将给出详细的说明。 对于排序的算法我想先做一点简单的介绍,也是给这篇文章理一个提纲。 我将按照算法的复杂度,从简单到难来分析算法。 第一部分是简单排序算法,后面你将转载 2012-03-02 14:34:20 · 379 阅读 · 0 评论 -
指针函数和函数指针
一、指针函数 当一个函数声明其返回值为一个指针时,实际上就是返回一个地址给调用函数,以用于需要指针或地址的表达式中。 格式: 类型说明符 * 函数名(参数) 当然了,由于返回的是一个地址,所以类型说明符一般都是int。 例如:int *GetDate(); int * aaa(int,int);转载 2012-03-02 14:32:15 · 323 阅读 · 0 评论 -
C++中取随机数函数:rand() 和srand()
一、C++中不能使用random()函数 random函数不是ANSI C标准,不能在gcc,vc等编译器下编译通过。 可改用C++下的rand函数来实现。 1、C++标准函数库提供一随机数生成器rand,返回0-RAND_MAX之间均匀分布的伪随机整数。 RAND_MAX必须至少为32767。rand()函数不接受参数,默认以1为种子(即起始值)。 随机数生成器总是以相同转载 2012-02-03 15:18:33 · 1427 阅读 · 0 评论 -
断言失败-缺少资源 .
有的人可能会在App类的构造函数中去生成一些界面上的资源,比如对话框.这样做在Release版本下一般不会报错.但是在Debug版本下,则会爆出断言错误.提示某资源没有加载成功.一般来说,最好把生成界面这些操作放入App类的InitInstance()函数中,因为构造函数在构造时,貌似还是处于一种全无的状态.转载 2012-02-02 10:26:38 · 699 阅读 · 0 评论 -
C++友元 简述 .
#include "windows.h"#include "iostream.h"class FB;class FA{public: FA() { strcpy(chMsg, "C++友元学习"); }; void Msg(FB & fb); //类的成员函数,其是类FB的友元函数 friend void Msg2(FA & fa);priva转载 2012-01-29 11:24:14 · 416 阅读 · 0 评论 -
C++实现注册表简单操作
摘抄:http://dev.yesky.com/162/2043662.shtmlWindows的注册表中包含了Windows的系统配置、PC机的硬件配置、Win32应用程序和用户的其他设置信息。注册表和INI文件不同,它是多层次的树状数据结构,具有六个分支(根键),每个分支又由许多的键和键值组成,而每个键则代表一个特定的配置项目。在注册表中键可以包括子键和值。我们可以对他做个比喻,键就是目录转载 2012-03-09 15:44:44 · 861 阅读 · 0 评论 -
关于CString剖析,“strcmp”: 不能将参数1从“CString”转换为“const char *”问题
CString csNewListBoxText;CString csOldListBoxText(g_csFirstListBoxSelText);if(strcmp(csNewListBoxText,csOldListBoxText)!=0)//Release版本下出错情况://error C2664: “strcmp”: 不能将参数1 ,2从“CString”转换为“cons转载 2012-04-06 16:33:18 · 1182 阅读 · 0 评论 -
怎么利用完成端口监听多个不同端口的socket
你可以试一试 创建两个监听线程,用事件event模型让其出发链接事件,然后两个不同的线程去处理send,recv1.对于每个端口,都单独开一个监听线程2.在每个线程里,有客户端连接的时候,用CreateIoCompletionPort去关联3.关联之后可以立即投递一个recv去接收数据4.一旦recv到数据后,就会进入IOCP的工作线程了,按照你的具体需求进行编码了你可以到http://转载 2016-03-29 17:10:46 · 7166 阅读 · 0 评论 -
CString、TCHAR*、char*转换
[转载]CString、TCHAR*、char*转换char*、TCHAR*转换CString CString str(****) 下面详细写一下其它转换 ////////////////////////////// /* ***********************************************************************转载 2013-12-04 16:38:12 · 617 阅读 · 0 评论 -
MFC 多线程总结
(一) MFC对多线程编程的支持 MFC中有两类线程,分别称之为工作者线程和用户界面线程。二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环。 工作者线程没有消息机制,通常用来执行后台计算和维护任务,如冗长的计算过程,打印机的后台打印等。用户界面线程一般用于处理独立于其他线程执行之外 的用户输入,响应用户及系转载 2013-10-23 17:24:48 · 754 阅读 · 1 评论 -
C++内存管理
C++内存管理[导语]内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也转载 2013-08-12 17:04:07 · 867 阅读 · 0 评论 -
C++连接数据库的方法
数据库连接有多种方式,通过学习得知有几种方法,但还没时间亲自实验:1.使用纯C++实现,通过db-libaray· 2.通过托管c++直接使用.netframework3.使用OTL类库,简单例子参考: http://otl.sourceforge.net/otl4_examples.zip,http://otl.sourceforge.net/otl3_down.htm4.使用A转载 2012-12-24 11:35:12 · 948 阅读 · 0 评论 -
AfxBeginThread的介绍/基本用法
AfxBeginThread 用户界面线程和工作者线程都是由AfxBeginThread创建的。现在,考察该函数:MFC提供了两个重载版的AfxBeginThread,一个用于用户界面线程,另一个用于工作者线程,分别有如下的原型和过程:用户界面线程的AfxBeginThread 用户界面线程的AfxBeginThread的原型如下:CWinThread* AFXAPI Afx转载 2012-07-04 15:07:44 · 488 阅读 · 0 评论 -
多线程 AfxBeginThread 与 CreateThread 的区别
AfxBeginThread 与 CreateThread 的区别简言之: AfxBeginThread是MFC的全局函数,是对CreateThread的封装。 CreateThread是Win32 API函数,前者最终要调到后者。1>.具体说来,CreateThread这个 函数是windows提供给用户的 API函数,是SDK的标准形式,在使用的转载 2012-07-04 15:06:51 · 504 阅读 · 0 评论 -
C++ 字符串数组去重
vector v_ress; for(int i = 0;i { bool Isok = true ; for(int j= 0;j { if(v_ress[j] == vresult[i]) { Isok = false ; break; } }原创 2012-06-13 17:17:12 · 5315 阅读 · 0 评论 -
gzip压缩的数据如何在内存中解压
http://bbs.chinaunix.net/thread-1361609-1-1.htmlhttp://hispider.googlecode.com/svn/trunk/devel/hispider/src/utils/zstream.c转载 2012-05-10 11:36:18 · 1432 阅读 · 0 评论 -
C++ 求数组中最大值
Max value//============================================= max// From algorithms/arrayfuncs.cpp// Returns the maximum value in an array.float max(float a[], int size) { assert(size > 0);转载 2012-01-30 13:03:13 · 10674 阅读 · 0 评论 -
C++抽象数据类型(ADT Abstract Data Type)简述 .
1.1、运算符重载运算符的重载仍保留原有的优先级、操作数个数(参数个数)和语法结构。定义:operator @a、“=”仅允许作为成员函数来重载b、“[]”下标运算符的重载必须是成员函数且它需要单个参数c、运算符new和delete控制动态内存分配,也可被重载d、不能重载成员选择运算符“.”;不能重载自定义运算符,主要原因是难以确定其优先级,也没这个必要;e、操作符重载转载 2012-01-29 11:27:30 · 1145 阅读 · 0 评论 -
GetMemory函数的几种经典考法
代码1: void GetMemory(char *p){ p = (char*)malloc(100);}int main(int argc, char *argv[]){ char *str = NULL; GetMemory(str);转载 2011-08-10 17:59:53 · 541 阅读 · 0 评论 -
Vector中两个元素值的交换
swap是可以交换vector的变量 代码如下 int main(int argc, char* argv[]) { std::vector sentence; sentence.push_back( "hello "); sente转载 2011-09-06 16:35:26 · 38757 阅读 · 0 评论 -
C++字符串长度
字符串的长度通常是指字符串中包含字符的数目,但有的时候人们需要的是字符串所占字节的数目。常见的获取字符串长度的方法包括如下几种。1.使用sizeof获取字符串长度sizeof的含义很明确,它用以获取字符数组的字节数(当然包括结束符\0)。对于ANSI字符串和UNICODE转载 2011-08-08 16:03:37 · 27685 阅读 · 0 评论 -
vector 做函数参数
void fest(const vector &kk)转载 2011-08-04 16:31:13 · 667 阅读 · 0 评论 -
练习2-4:编一个程序统计文件中特定单词出现的次数(要求使用string类的运算符==来查找单词) .
#include#include#includeusing namespace std; void main(){ ifstream in("e://test.txt"); string word; int num = 0; while(i转载 2011-08-31 18:11:22 · 783 阅读 · 0 评论 -
C++ 简单的文件加密和解密 实例
从网上淘了一段 文件加密的程序,看完之后,明白了它所谓的文件加密,其实原理相当简单: 即是按字节 或 按位 读取一个要加密的文件中的数据,然后与我们自己输入的密码做一些 算法操作,将新的数据写入到新文件中,这个新文件就是我们的加密后的文件。转载 2011-07-30 18:06:57 · 935 阅读 · 0 评论 -
C++ 播放声音
一、播放系统的消息声音 BOOL WINAPI MessageBeep( __in UINT uType); MSDN 中对这个函数的说明是:播放一个波形文件(也就是wav格式),每一个声音类型的波形声音在注册表中有一个条目(entry)指定.view plainco转载 2011-07-30 18:07:35 · 1431 阅读 · 0 评论 -
字符编码简介:ASCII,Unicode,UTF-8,GB2312
字符编码简介:ASCII,Unicode,UTF-8,GB23121. ASCII码我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说转载 2011-07-29 17:31:34 · 330 阅读 · 0 评论 -
对于二维vector的定义
1.vector 的数据的存入和输出:#include#include#include using namespace std;void main(){ int i = 0; vector v; for( i = 0; i转载 2011-08-04 14:30:33 · 2331 阅读 · 0 评论 -
数组一维2维3维动态申请及用Vector的表示方法
1. 变长一维数组这里说的变长数组是指在编译时不能确定数组长度,程序在运行时需要动态分配内存空间的数组。实现变长数组最简单的是变长一维数组,你可以这样做:#includeusing namespace std;int main(){int len;ci转载 2011-08-11 13:56:19 · 648 阅读 · 0 评论 -
C++语言机制之多态性 与 代码重用机制的一种工具之模板 小结 .
一、抽象类的指针指向其派生的非抽象类的对象,从而体现多态性1.1、实例代码://该实例代码来自,全国2009年10月自学考试C++程序设计试题 课程代码:04737 试题号:50#include using namespace std;#include class A{ public: virtual void GetA() = 0; //带有纯虚函数的类称为抽象转载 2012-01-29 11:26:24 · 486 阅读 · 0 评论 -
C++中 static、const 应用小结 .
C++ static、const和static const 以及它们的初始化 const定义的常量在函数执行之后其空间会被释放,而static定义的静态常量在函数执行后不会被释放其空间。static 表示的是静态的。类的静态成员函数,成员变量是和类相关的,不是和类的具体对象相关,即使没有具体的对象,也能调用类的静态成员函数,成员变量。一般的静态函数几乎就是一个全局函数,只不过它的作用域限转载 2012-01-29 11:23:07 · 449 阅读 · 0 评论 -
C++面向对象语言的重要特性之一 继承 .
面向对象程序设计的核心:对象、类和继承,如果再加一种的话应该是多态性; //来自C++ Program Design [美] James P.Cohoon & Jack W.Davidson C++程序设计(第三版)中文译本 P6491、派生类格式class 派生类类:[访问属性,public、protected、private,默认值]基类名{... ...};class转载 2012-01-29 11:25:27 · 467 阅读 · 0 评论 -
如何调试MFC中的内存泄漏[转帖]
注释:红色部分为本人增加 首先,应该是MFC报告我们发现内存泄漏。注意:要多运行几次,以确定输出的内容不变,特别是{}之间的数值,不能变,否则下面的方法就不好用了。 实际开发过程中,序号基本是多变的,所以需要变通1。如果有连续序号泄露点以尝试猜测一个,虽然在变,但总是在一定范围的,运气好还真能碰到2。看泄露的字节,查找new的一些结构体是否大小一致(笔算结构体大小时记的转载 2012-01-17 11:52:05 · 350 阅读 · 0 评论 -
C++ 十进制转换成定长二进制
long number=123456789; char string[32]; char string1[32]; itoa(number,string,2); int iii=strlen(string); for (int i=0; i { string1[i]='0'; } for (int i=0; i {转载 2012-01-17 11:45:12 · 697 阅读 · 0 评论 -
C++动态数组(转)
1.变长一维数组 这里说的变长数组是指在编译时不能确定数组长度,程序在运行时需要动态分配内存空间的数组。实现变长数组最简单的是变长一维数组,你可以这样做: //文件名: array01.cpp #include using namespace std; int main()转载 2011-11-22 09:58:20 · 353 阅读 · 0 评论 -
深入理解C++的动态绑定和静态绑定
为了支持c++的多态性,才有了动态绑定和静态绑定。理解他们的区别有助于更好的理解多态性,以及在编程的过程中避免犯错误。需要理解四个名词:1、对象的静态类型:对象在声明时采用的类型。是在编译期确定的。2、对象的动态类型:目前所指对象的类型。是在运行期决定的。对象的动态类转载 2011-08-24 17:04:30 · 300 阅读 · 0 评论