C&C++技术
文章平均质量分 58
haohuang_hd
这个作者很懒,什么都没留下…
展开
-
c++读写文件流
<FONT size=3>掌握文本文件读写的方法 002了解二进制文件的读写方法 003004C++文件流: 005fstream // 文件流 006ifstream // 输入文件流 007ofstream // 输出文件流 008009//创建一个文本文件并写入信息 010//同向屏幕上输出信息一样将信息输出至文件 011#include<iomanip.h> 012#include<fstream.h> 013voidmain() 014{ 015 ofstream f1("d://me.t转载 2011-02-27 14:39:00 · 461 阅读 · 0 评论 -
ACE网络通信库的配置
<br />1.下载:http://download.dre.vanderbilt.edu/<br />2.解压。然后根据目录ACE+TAO+CIAO-6.0.1/ACE_wrappers下的ACE-INSTALL.html中的说明编译项目,生成lib和dll文件<br />3.具体步骤:在ace目录下添加config.h文件<br /> 在此文件中添加#include "ace/config-win32.h"<br /> 可选的配置有:<br />//#define ACE_HAS_WINNT4原创 2011-03-11 11:10:00 · 1830 阅读 · 0 评论 -
ACE网络通信学习--实现cs模式的通信与文件传输
<br /> 客户端:<br /> <br /> <br /> <br /> <br /> 服务端:原创 2011-03-11 11:12:00 · 742 阅读 · 0 评论 -
C++模板实现事件处理器中的“通用成员函数指针”的调用
我最近在实现一个事件处理器,应用到了一种“通用成员函数指针的注册”,先声明,这个名词是我给起的,不过我觉得并不充分恰当,但也想不出什么更好的词,看完下面的介绍,也考考您,看这玩意叫个啥比较合适。<br /><br />先说需求:这个事件处理器需要在捕获一个事件后,调用已注册的处理函数。看起来很普通,呵呵,不过,这个事件处理函数不一定是哪个类的成员函数(但肯定是成员函数),函数的形式是一定的,即拥有相同的返回类型和参数列表。而这些事件和处理函数,注册在一个全局的结构体中。<br /><br />问题的提出:同转载 2011-03-12 22:26:00 · 686 阅读 · 0 评论 -
Windows sockets 网络编程(1) — 综述
<br />http://hi.baidu.com/ewook/blog/item/437245a9b42216f11e17a22e.html<br /><br />一、头文件及Library<br />头文件:Winsock2.h #include <Winsock2.h><br />Library:Ws2_32.lib<br />二、主要函数<br />1. int WSAStartup(WORD wVersionRequested, LPW转载 2011-03-17 15:13:00 · 667 阅读 · 0 评论 -
Windows sockets 网络编程(2) — 阻塞模式开发
<br />一、套接字的阻塞模式<br /> Windows Sockets 套接字模式用于当一个套接字被调用时,决定调用函数的阻塞行为。套接字模式有阻塞和非阻塞两种工作模式。<br /> 在阻塞模式下,在I/O操作完成之前,执行的操作函数将一直等候而不会立即返回,该函数所在的线程会阻塞在这里。<br /> 例如当调用recv()函数时,系统首先检查是否有准备好的数据。如果数据没有准备好,系统就处于等待状态。当数据准备好后,将数据从系统缓冲区复制到用户空间,然后该函数返转载 2011-03-17 15:15:00 · 510 阅读 · 0 评论 -
Windows sockets 网络编程(3) — 非阻塞模式开发
<br />一、套接字的非阻塞模式<br /> 套接字的非阻塞模式是指套接字在执行操作时,调用的函数不管操作是否完成都会立即返回的工作模式。根据其返回的错误代码,确定操作是否正确完成。<br />二、设置套接字的非阻塞模式<br /> 在使用socket()和WSASocket()函数创建套接字时,默认都是阻塞模式的。在创建套接字之后,可以通过调用ioctlsocket()函数,将套接字设置为非阻塞模式。<br /> int ioctlsocket(SOCKETs, lo转载 2011-03-17 15:19:00 · 704 阅读 · 0 评论 -
深入 CSocket 编程之阻塞和非阻塞模式
<br /><br />本文适合初中级读者阅读 <br /><br /> 有时,花上几个小时阅读、调试、跟踪优秀的源码程序,能够更快地掌握某些技术关键点和精髓。当然,前提是对这些技术大致上有一个了解。 <br /> 我通过几个采用 CSocket 类编写并基于 Client/Server (客户端 / 服务端)的网络聊天和传输文件的程序 ( 详见: 源代码参考 ) ,在调试这些程序的过程中,追踪深入至 CSocket 类核心源码 Sockcore.cpp , 对于CSocket 类的运行机制可谓是一览无转载 2011-03-17 21:02:00 · 434 阅读 · 0 评论 -
内存溢出--操作mysql
<br />在数据库中设置的字符串长度为30.而实际插入的字符串长度为32,于是调用mysql_query时会报CRT dedecated ...... after end of heap buffer原创 2011-03-28 17:34:00 · 467 阅读 · 0 评论 -
MultiByteToWideChar和WideCharToMultiByte用法详解
<br />http://www.cppblog.com/sunraiing9/archive/2007/03/21/20281.html<br />//========================================================================<br />//TITLE:<br />// MultiByteToWideChar和WideCharToMultiByte用法详解<br />//AUTHOR:<br />// norains<br转载 2011-03-30 22:17:00 · 473 阅读 · 0 评论 -
CString转char
1.传给未分配内存的const char* (LPCTSTR)指针. CString cstr(asdd); const char* ch = (LPCTSTR)cstr; ch指向的地址和cstr相同。但由于使用const保证ch不会修改,所以安全.2.传给未分配内存的指针. CString cstr = "ASDDSD"; char *ch = cstr.GetBuffer(cstr1.GetLength() + 1); cstr.ReleaseBuffer();转载 2011-03-13 18:04:00 · 712 阅读 · 0 评论 -
C++各大有名库的介绍——网络通信
在C++中,库的地位是非常高的。C++之父 Bjarne Stroustrup先生多次表示了设计库来扩充功能要好过设计更多的语法的言论。现实中,C++的库门类繁多,解决的问题也是极其广泛,库从轻量级到重量级的都有。不少都是让人眼界大开,亦或是望而生叹的思维杰作。由于库的数量非常庞大,而且限于笔者水平,其中很多并不了解。所以文中所提的一些库都是比较著名的大型库。 C++各大有名库的介绍——网络通信1、ACE参考网站:http://www.cs.wustl.edu/~schmidt/ACE.html C++库原创 2011-03-10 22:21:00 · 1730 阅读 · 0 评论 -
多线程编程之一——问题提出
<br />一、问题的提出<br />编写一个耗时的单线程程序:<br /> 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下: void CSingleThreadDlg::OnSleepSixSecond() { Sleep(6000); //延时6秒}<br /> 编译并运行应用程序,单击“延时6秒”按钮,你就会原创 2011-02-27 22:42:00 · 266 阅读 · 0 评论 -
多线程编程之三——线程间通讯
<br />七、线程间通讯<br /> 一般而言,应用程序中的一个次要线程总是为主线程执行特定的任务,这样,主线程和次要线程间必定有一个信息传递的渠道,也就是主线程和次要线程间要进行通信。这种线程间的通信不但是难以避免的,而且在多线程编程中也是复杂和频繁的,下面将进行说明。 使用全局变量进行通信<br /><br />由于属于同一个进程的各个线程共享操作系统分配该进程的资源,故解决线程间通信最简单的一种方法是使用全局变量。对于标准类型的全局变量,我们建议使用volatile 修饰符,它告诉编译器无需对该变原创 2011-02-27 22:45:00 · 327 阅读 · 0 评论 -
多线程编程之四——线程的同步
<br />八、线程的同步<br /> 虽然多线程能给我们带来好处,但是也有不少问题需要解决。例如,对于像磁盘驱动器这样独占性系统资源,由于线程可以执行进程的任何代码段,且线程的运行是由系统调度自动完成的,具有一定的不确定性,因此就有可能出现两个线程同时对磁盘驱动器进行操作,从而出现操作错误;又例如,对于银行系统的计算机来说,可能使用一个线程来更新其用户数据库,而用另外一个线程来读取数据库以响应储户的需要,极有可能读数据库的线程读取的是未完全更新的数据库,因为可能在读的时候只有一部分数据被更新过。<br转载 2011-02-27 22:46:00 · 315 阅读 · 0 评论 -
多线程编程之二——MFC中的多线程开发
<br />五、MFC对多线程编程的支持<br /> MFC中有两类线程,分别称之为工作者线程和用户界面线程。二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环。<br /> 工作者线程没有消息机制,通常用来执行后台计算和维护任务,如冗长的计算过程,打印机的后台打印等。用户界面线程一般用于处理独立于其他线程执行之外的用户输入,响应用户及系统所产生的事件和消息等。但对于Win32的API编程而言,这两种线程是没有区别的,它们都只需线程的启动地址即可启动线程来执行任务。<br转载 2011-02-27 22:44:00 · 370 阅读 · 0 评论 -
CvSaveImage()保存jpeg时压缩图像的方法
<br /> CVAPI(int) cvSaveImage(constchar* filename,constCvArr* image,<br /> constint* params CV_DEFAULT(0));<br />第三个参数可以设置压缩的质量<br />int params[3]<br />params[0] = CV_IMWRITE_JPEG_QUALITY;<br />params[1] = 85;//设置s压缩度<br />params[原创 2011-03-07 11:48:00 · 3175 阅读 · 0 评论 -
c++ 连接mysql类
<br />文章来源:http://hi.baidu.com/lbxthinker/blog/item/9b837b0f8a306fdb7acbe113.html<br /> <br />connpool.h文件<br />/**<br />*数据库连接池(单例模式)<br />*<br />*@authour libingxiang<br />*<br />*@email lbxthinker@gmail.com<br />**/<br />#ifndef CONN_POOL_H<br />#define转载 2011-03-09 23:14:00 · 2303 阅读 · 0 评论 -
dll导出stl类
本文讨论了如何执行以下任务: 导出实例化的一个标准模板库 (STL) 类。 导出包含一个 STL 的一个数据成员的类对象。请注意您可以不导出一个通用的模板。必须进行实例化模板 ; 也就是所有模板参数时必须提供,并且必须完全定义的类型的实例化。 实例"堆栈 <int>;"实例化 STL 堆栈类。在实例化强制类堆栈 <int>来生成的所有的成员。<br /><br />此外请注意一些 STL 容器 (图、 组、 队列、 列表、 deque) 不能被导出。请参阅更多信息一节进行详细说明。回到顶端更多信转载 2011-03-10 15:16:00 · 1146 阅读 · 0 评论 -
vc连mysql类
文章来源:http://hi.baidu.com/boger/blog/item/feda86029f66000a4bfb519d.html在vc中通过连接池操作mysql(api方式),附c++访问mysql的封装类2008年06月11日 星期三 15:31在有大量节点访问的数据库设计中,经常要使用到连接池来管理所有的连接.一般方法是:建立两个连接句柄队列,空闲的等待使用的队列和正在使用的队列.当要查询时先从空闲队列中获取一个句柄,插入到正在使用的队列,再用这个句柄做数据库操作,完毕后一定要从使用队列中删转载 2011-03-09 22:57:00 · 1978 阅读 · 0 评论 -
zlib用法简单说明
文章来源:http://hi.baidu.com/boger/blog/item/84dd9452bd39e00b0cf3e32f.htmlzlib用法简单说明2008年06月04日 星期三 14:13<br />1. 如何获得zlib<br />zlib的主页是:http://www.zlib.net/<br />2. 用VC++6.0打开<br />把 下载的源代码解压打开,VC6.0的工程已经建好了,在/projects/visualc6. 双击zlib.dsw, 可以在VC++6.0中看到里面有3个转载 2011-03-09 22:58:00 · 693 阅读 · 0 评论 -
关于memcpy与cvsaveimage/cvloadimage
<br />char * buf = new buf[10000];<br />char name[20];<br />在给使用数组或指针前,应该都用memset(name, 0, 20)<br /> <br />memcpy(&buf[pos], name, 20)<br /> <br />cvsaveimage与cvloadimage<br />进行处理后的jpg图像,像素值有细微的差别<br />本人在提取同一章图像的md5摘要时,出现结果不相等原创 2011-03-30 08:47:00 · 811 阅读 · 0 评论