C++/C
文章平均质量分 76
刀锋
这个世界并不在乎你的自尊,只在乎你做出来的成绩。有了成绩再去强调你的感受。
展开
-
select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSETselect函数用于在非阻塞中,当一个套接字或一组套接字有信号时通知你,系统提供select函数来实现多路复用输入/输出模型,原型: #include sys/time.h> #include unistd.h> int转载 2012-05-30 10:46:34 · 501 阅读 · 0 评论 -
单链表的逆置-C++实现
对于单链表的逆置有两种方法可以实现:(1)利用辅助指针 基本思想:在遍历结点过程中,设置辅助指针,用于记录先前遍历的结点。这样依次编译的过程中只需修改其后继结点的next域即可。 实现代码:[cpp] view plaincopyprint?typedef int DataType; //类型定义 typedef str转载 2012-08-19 16:30:23 · 1194 阅读 · 0 评论 -
编程实现队列的入队、出队、测长、打印
http://blog.163.com/qingfeng_0818/blog/#m=0&t=1&c=fks_084070084087086070085094084095086086086069084085084066093(相关内容见此博客)队列的定义及基本运算1、定义 队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性转载 2012-08-20 09:12:21 · 22066 阅读 · 0 评论 -
Windows管道系统 - 命名管道
命名管道一个命名管道是一个有名的、用于管道服务端与一个或多个管道客户端进行单路(“One-way”)或双向通讯的管道。一个命名管道的所有实例共享同一个管道名字,但是每一个实例都有它自己的管道句柄和缓冲区,并为客户/服务端的通讯提供独立的通讯渠道。管道实例的使用可以让多个管道客户端同时使用同一个命名管道。任何进程都可以访问命名管道,并接受安全权限的检查,通过命名管道使相关的或不相关的进程之间转载 2012-08-27 10:26:15 · 7948 阅读 · 0 评论 -
Windows进程间通信之命名管道
命名管道是通过网络来完成进程间的通信,它屏蔽了底层的网络协议细节。我们在不了解网络协议的情况下,也可以利用命名管道来实现进程间的通信。与Socket网络通信相比,命名管道不再需要编写身份验证的代码。将命名管道作为一种网络编程方案时,它实际上建立了一个C/S通信体系,并在其中可靠的传输数据。命名管道服务器和客户机的区别在于:服务器是唯一一个有权创建命名管道的进程,也只有它能接受管道客户机的连接请求。转载 2012-08-27 18:28:08 · 1802 阅读 · 0 评论 -
博文进程间通信详解 - 命名管道实现(转)中 NamedPipeServer.cpp文件总结
对http://blog.csdn.net/daofengdeba/article/details/7782381中的NamedPipeServer.cpp终于看懂了,留了注释以做笔记NamedPipeServer.cpp#include "NamedPipeServer.h" int main(int argc, char * argv){ CreateNamedPipeI原创 2012-08-27 18:48:24 · 4544 阅读 · 0 评论 -
重入和不可重入函数概念浅析
主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误;而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能运行在多任务环境下的。也可以这样理解,重入即表示重复进入,首先它意味着这个函数可以被中断,其次意转载 2012-11-01 15:33:06 · 400 阅读 · 0 评论 -
VC++和C++builder互相调用动态链接库DLL(VC++编的)笔记
关于动态链接库的具体介绍参考本人转载博客:进程间通信详解 - 动态链接库实现下文说说自己编写的动态链接库,主要作用是实现用VC++编写的A程序和用C++builder编写的B程序之间的通信,其中涉及结构体,所以需要注意一下,1>动态链接库myDLL 新建一个dll工程(MFC AppWizard(dll)),并命名myDLL,这个工程中有三种形式:原创 2012-11-25 11:40:18 · 7296 阅读 · 0 评论 -
寄存器、RAM、ROM、Flash相关概念区别整理
寄存器寄存器是中央处理器内的组成部份。它跟CPU有关。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。存储器存储器范围最大,它几乎涵盖了所有关于存储的范畴。你所说的寄存器,内存,都是存储器里面的一种。凡是有存储能力的硬件,都转载 2012-11-27 10:46:27 · 1540 阅读 · 0 评论 -
Rational Rose 2003 下载、破解及安装方法
方法一: 1、安装Rational Rose2003时,在需选择安装项的时候,只选择Rational Rose EnterPrise Edition即可,不需选择其他项,之后选择“DeskTop Installation from CD Image“,一路下一步。出现Mem_pointer_Bad错误,点击确定继续;2、安装finish后将弹出的Rational License Key转载 2012-12-11 12:57:53 · 653 阅读 · 0 评论 -
如何用rose 2003反向生成UML图
2.1 ANSI C++(标准C++)逆向工程(Reverse Engineer)使用标准C++逆向工程,需要在组件图(component view)中创建一个组件(component),设置好需要进行转换的组件的信息,也就是该组件的语言、所包含的文件、文件所在的路径、文件后缀等等信息,然后Reverse Engineer就可以根据给定的信息将代码转换成类图了。(一) 右键点击组转载 2012-12-11 21:29:42 · 755 阅读 · 0 评论 -
BCB用OLE操作Excel
本文档部分资料来自互联网,大部分是ccrun(老妖)在Excel中通过录制宏-->察看宏代码-->转为CB代码而来.本文档不断更新中.欢迎大家关注.要在应用程序中控制Excel的运行,首先必须在编制自动化客户程序时包含Comobj.hpp#include "Comobj.hpp"C++ Builder把Excel自动化对象的功能包装在下面的四个Ole Object Clas转载 2013-01-07 15:07:10 · 1167 阅读 · 0 评论 -
用Windows API进行串口编程的一般步骤及相关函数讲解
虽然使用诸如 CSerialPort VC串口类,MSComm VC 串口控件等非常方便,但有时这些控件并不适合自己的特殊需求,所以有必要了解一下基于Windows API的串口编程方法,下面介绍一下API串口编程的一般步骤及相关串口API函数。串口操作一般有四步,分别是:1) 打开串口2) 配置串口3) 读写串口4) 关闭串口1、 打开串口 在《VC 打开串口》一文转载 2013-05-15 11:13:08 · 2619 阅读 · 1 评论 -
C++Builder中大尺寸图象的显示技巧
在C++Builder中利用TImage控件可以轻松地读入并显示图象,但TImage 控件本身不可以接收输入焦点,也没带有滚动条,在显示超出显示区域范围的大图象时,需要对TImage控件进行加强。本文提出两种最容易实现且有效的方法,满足不同应用的需求。方法一:增加滚动条。增加滚动条可以通过将TImage放在TScrollBox控件中来实现。步骤如下:(1)、在窗体中放置一个TScrol转载 2013-09-11 14:34:43 · 1739 阅读 · 0 评论 -
reinterpret_cast,const_cast,static_cast,dynamic_cast 总结
reinterpret_cast,const_cast,static_cast,dynamic_cast 总结 #includeint main(void){//reinterpret_cast//将一个类型指针转换为另一个类型指针,这种在转换不修改指针变量值数据存放格式//只需在编译时重新解释指针的类型,他可以将指针转化为一个整型数但不能用于非指针的转换转载 2012-08-17 16:30:54 · 433 阅读 · 0 评论 -
C++ 中将构造函数,析构函数声明为private,protected
问题:我看到有些程序中,将构造函数,析构函数声明为私有和保护的,那么对象如何创建?已经不能从外部调用构造函数了,但是对象必须被构造,应该如何解决,麻烦大家帮忙说明,关于构造,析构函数声明为私有和保护时的用法,回答:从语法上来讲,一个函数被声明为protected或者private,那么这个函数就不能从“外部”直接被调用了。对于protected的函数,子类的“内部”的其转载 2012-08-16 22:05:47 · 997 阅读 · 0 评论 -
struct termios
一、数据成员termios 函数族提供了一个常规的终端接口,用于控制非同步通信端口。 这个结构包含了至少下列成员: tcflag_t c_iflag; /* 输入模式 */tcflag_t c_oflag; /* 输出模式 */tcflag_t c_cflag; /* 控制模式 */tcflag_t c_lflag; /* 本地模式 */转载 2012-06-01 09:35:45 · 770 阅读 · 0 评论 -
ofstream 和ifstream的具体用法
这个小知识点迷糊了很久了,前段时间始终没有搞清楚,今天又拿过来看的时候好象明白了点......今天将ifstream 与ofstream的用法归纳一下(一)ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间;在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这转载 2012-08-03 20:08:50 · 1981 阅读 · 0 评论 -
CString::Format(...)
MFC中CString.Format的详细用法 收藏 在MFC程序中,使用CString来处理字符串是一个很不错的选择。 CString既可以处理Unicode标准的字符串,也可以处理ANSI标准的字符串。CString的Format方法给我们进行字符串的转换带来了很大的方便,比如常见的int、float和double这些数字类型转换为CString字符串只需一行代码就可以实现。 先看转载 2012-08-06 09:35:26 · 590 阅读 · 0 评论 -
如何在Windows下实现动态链接库(DLL)共享数据段
《 程序员的自我修养》一书9.1.3节中描述了DLL共享数据段的功能和原理,本人通过上网搜索并编写测试程序,找到了实现方法,现简述如下: 1. 在DLL实现文件(.c, .cpp)中定义自定义数据段,并指定其读写和共享权限,具体如下:#pragma data_seg (".myseg")SHAREDATADLL_API int g_nCount = 0; SHAREDATAD转载 2012-07-23 10:56:20 · 2648 阅读 · 0 评论 -
进程间通信详解 - 匿名管道实现
引子前面的两篇博文分别介绍了通过剪贴板和通过邮槽来实现进程之间的通信,其中剪贴板呢,是用来实现本地两个进程之间的通信,而邮槽则既可以实现本地两个进程之间的通信,也可以实现本地进程和服务器进程的通信,当然,上面这两种方式都是有局限性的,比如剪贴板就只能实现本地进程之间的通信,而在邮槽中,虽然是既可以实现本地进程之间的通信,又能实现本地进程和远程服务器进程的通信转载 2012-07-24 21:59:30 · 1602 阅读 · 0 评论 -
进程间通信详解 - 邮槽实现
引子前面的一篇博文介绍了进程之间通信的一种最为简单的方式,也就是在本地进程之间通过剪贴板来实现进程间通信,而剪贴板自有其缺陷,很显然的是,剪贴板只能在本地机器上实现,无法实现本地进程与远程服务器上的进程之间的通信,那么有没有办法实现本地进程和远程进程的通信呢?办法自然是有的,要是实在搞不出,我拿 Socket 来实现本地进程和远程进程的通信来转载 2012-07-24 21:57:09 · 1266 阅读 · 0 评论 -
进程间通信详解 - 命名管道实现
引子好,到这里呢,就需要介绍实现进程间通信的第四种方式了,也就是通过命名管道来实现,前面介绍的那三种方式呢,都是有缺陷或者说局限性太强,而这里介绍的命名管道相对来说,在这方面就做得好很多了,比如,剪贴板的话只能实现本机上进程之间的通信,而邮槽的话虽然是可以实现跨网络之间的进程的通信,但麻烦的是邮槽的服务端只能接收数据,邮槽的客户端只能发送数据,太悲剧转载 2012-07-24 21:54:52 · 2943 阅读 · 0 评论 -
进程间通信详解 - 动态链接库实现
引子前面介绍的几种用于实现进程之间通信的方法都是比较正统的方式,像剪贴板,命名管道这些都还是用得比较多的,而这里将介绍的是一种比较偏门的方法来实现进程间的通信,所谓偏门呢,自然就是用的少,能够不用就不要使用。其实这种方法就是通过动态链接库来实现进程间的通信。 动态链接库(DLL)概述转载 2012-07-24 21:47:43 · 1729 阅读 · 0 评论 -
进程间通信详解 - 剪贴板实现
引子由于在启动一个进程后,操作系统会给这个进程分配 4GB 的私有地址空间,至于为何有 4GB 这么大,那得考虑进程的私有地址空间和实际物理内存地址空间之间的映射以及页交换等等细节问题了,这里不予讨论,从名字就可以知道,既然操作系统给每一个进程分配的是私有地址空间,自然,这段地址空间也只有这个进程自己才能访问了,不然还称为私有干吗呢?既然这段私有地址空间只能转载 2012-07-24 21:51:51 · 1579 阅读 · 0 评论 -
C++中const用法总结
1. const常量,如const int max = 100;优点:const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能会产生意料不到的错误。2. const修饰类的数据成员。转载 2012-08-13 14:46:03 · 981 阅读 · 0 评论 -
vector中erase用法注意事项
以前就发现了vector中的erase方法有些诡异(^_^),稍不注意,就会出错。今天又一次遇到了,就索性总结一下,尤其是在循环体中用erase时,由于vector.begin() 和vector.end()是变化的,因此就引入了错误的可能性。erase的函数原型有两种形式:iterator erase(iterator position);iterator erase(itera转载 2012-08-14 15:31:43 · 83049 阅读 · 15 评论 -
C++浅拷贝和深拷贝的区别
c++默认的拷贝构造函数是浅拷贝浅拷贝就是对象的数据成员之间的简单赋值,如你设计了一个没有类而没有提供它的复制构造函数,当用该类的一个对象去给令一个对象赋值时所执行的过程就是浅拷贝,如:class A { public: A(int _data) : data(_data){} A(){}private: int data; };int main() { A a(5), b = a转载 2012-08-14 20:23:03 · 2431 阅读 · 0 评论 -
C++Builder 的一些高级编程技巧
1. C++ Builder 网上资源 C++ Builder 研究 http://www.ccrun.com/ C++ Builder 程序员 http://mybcb.diy.myrice.com/ 电脑学习 C++ Builder 版块 http://www.itcomputer.com.cn/Programs/C/CB/转载 2012-08-02 10:32:13 · 1081 阅读 · 0 评论 -
VS2008中添加位图资源
开发MFC工程,使用VS2008开发工具,欲添加位图资源,如下所示:(1)首先找到资源视图。资源视图的路径为:视图——资源视图。(2)然后在任何一个文件夹上右击,选择“添加资源”,出现如下对话框:(3)在此对话框中,选择左边资源类型中的Bitmap,再单击右边的按钮“新建”,就会出现位图的编辑窗口:(4)选择资源视图下的Bitmap文件夹中的位图文件,右边属性窗口中会显转载 2013-10-12 12:41:15 · 2686 阅读 · 0 评论