C/C++
沙漠里的海豚
这个作者很懒,什么都没留下…
展开
-
c++ 强制转换类型运算符 const_cast reinterpret_cast static_cast dynamic_cast
c++ 强制转换类型运算符 const_cast reinterpret_cast static_cast dynamic_cast 1. static_cast(a) 将地址a转换成类型T,T和a必须是指针、引用、算术类型或枚举类型。 表达式static_cast(a), a的值转换为模板中指定的类型T。在运行时转换过程中,不进行类型检查来转载 2008-04-16 16:10:00 · 737 阅读 · 0 评论 -
String类使用心得(希望大家有什么心得也回复出来,本人一并整理共享)
1.两个string类变量的比较因为String是引用类型的,不是基本数据类型,所以它们的比较是使用地址和值(相当于C中的指针)来比较的,因为它们是不同的对象,有不同的地址,所以str1!=str2永远都是true。而str1==str2永远是false。如果你中想比较它们的数值是否相等就使用str1.equals(str2)。使用==或者!=是对象的比较,它们为真的条件是:不仅要求是同一对象原创 2008-04-02 15:22:00 · 1447 阅读 · 2 评论 -
利用VC++获取异构型数据库库结构信息
利用VC++获取异构型数据库库结构信息 摘 要:本文在介绍ODBC技术的基础上,将MFC和ODBC API结合起来创建了两个自定义类,实现了对任意异构型数据库库结构信息的获取。关键字:ODBC,MFC,异构型数据库,记录集 一. 问题的提出 随着数据库技术在各个应用领域的迅速发展,市场上推出了多种数据库系统,为了充分利用资源,实现信息共享,以便用户能对异构型数据库实现透明的访转载 2008-04-03 14:10:00 · 850 阅读 · 0 评论 -
C++风格的类型转换的用法
C++风格的类型转换的用法这是More Effecitve C++里的第二条对类型转换讲的很好,也很基础好懂。Item M2:尽量使用C++风格的类型转换仔细想想地位卑贱的类型转换功能(cast),其在程序设计中的地位就象goto语句一样令人鄙视。但是它还不是无法令人忍受,因为当在某些紧要的关头,类型转换还是必需的,这时它是一个必需品。不过C风格的类型转换并不代表所有的类型转换功能。一来它们过转载 2008-04-03 10:36:00 · 574 阅读 · 0 评论 -
static_cast和reinterpret_cast揭秘
本文讨论static_cast。 reinterpret_cast可以转换任意一个32bit整数,包括所有的指针和整数。可以把任何整数转成指针,也可以把任何指针转成整数,以及把指针转化为任意类型的指针,威力最为强大!但不能将非32bit的实例转成指针。总之,只要是32bit的东东,怎么转都行! static_cast和dynamic_cast可以执行指针到指针的转换,或实例本身到实例本身的转换转载 2008-04-03 10:32:00 · 2652 阅读 · 2 评论 -
c++中的string用法
basic_string::append 向string 的后面加字符或字符串。(比+=, push_back 更灵活) (1) 向string 的后面加C-string basic _ string& append( const value _ type* _Ptr ); string s ( "Hello " ); // s= ” Hello ” const char *c原创 2008-03-26 16:31:00 · 794 阅读 · 0 评论 -
SQL常用字符串函数
一、字符转换函数1、ASCII()返回字符表达式最左端字符的ASCII 码值。在ASCII()函数中,纯数字的字符串可不用‘’括起来,但含其它字符的字符串必须用‘’括起来使用,否则会出错。2、CHAR()将ASCII 码转换为字符。如果没有输入0 ~ 255 之间的ASCII 码值,CHAR() 返回NULL 。3、LOWER()和UPPER()LOWER()将字符串全部转为小写;UPPER()将转载 2008-03-28 08:36:00 · 699 阅读 · 1 评论 -
main函数的参数
C程序最大的特点就是所有的程序都是用函数来装配的。main()称之为主函数,是所有程序运行的入口。其余函数分为有参或无参两种,均由main()函数或其它一般函数调用,若调用的是有参函数,则参数在调用时传递。main(){...y1=f1(x1,x2);...}f1(int a,int b){....Y2=f2(x3,x4);....}f2(int m,int n){.........}在前面课程的转载 2008-04-16 13:13:00 · 1649 阅读 · 0 评论 -
获取信息的有关Windows API
1.窗口信息 MS为我们提供了打开特定桌面和枚举桌面窗口的函数。 hDesk = OpenDesktop(lpszDesktop, 0, FALSE, DESKTOP_ENUMERATE); // 打开我们默认的Default桌面; EnumDesktopWindows(hDesk,(WNDENUMPROC)EnumWindowProc, 0); // 枚举打开桌面转载 2008-04-18 08:54:00 · 693 阅读 · 0 评论 -
动态链接库DLL的创建和使用
动态链接库DLL的创建和使用(2009-3-15 21:13:00) (1) 新建工程DllDemo,工程类型选择“Win32 Dynamic-Link Library”(2) 单击OK按钮,选择“A DLL that exports some symbols”,即要求VC++自动生成一些导出符号代码。(3) 点击Finish,完成工程创建。(4) 在头文件DllD转载 2009-04-27 18:44:00 · 1188 阅读 · 0 评论 -
_cdecl 和_stdcall
_cdecl 是C Declaration的缩写,表示C语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈。被调用函数无需要求调用者传递多少参数,调用者传递过多或者过少的参数,甚至完全不同的参数都不会产生编译阶段的错误。_stdcall 是Standard Call的缩写,是C++的标准调用方式:所有参数从右到左依次入栈,如果是调用类成员的话,最后一个入栈的是th转载 2008-11-18 14:26:00 · 929 阅读 · 2 评论 -
C++深拷贝与浅拷贝
浅拷贝就是成员数据之间的一一赋值:把值赋给一一赋给要拷贝的值。但是可能会有这样的情况:对象还包含资源,这里的资源可以值堆资源,或者一个文件。。当值拷贝的时候,两个对象就有用共同的资源,同时对资源可以访问,这样就会出问题。深拷贝就是用来解决这样的问题的,它把资源也赋值一次,使对象拥有不同的资源,但资源的内容是一样的。对于堆资源来说,就是在开辟一片堆内存,把原来的内容拷贝。 如果你拷贝的对象中引用了转载 2008-11-07 12:10:00 · 1070 阅读 · 0 评论 -
unsigned char与char的区别(转)
char 是无符号的 unsigned char 是无符号的,里面全是正数两者都作为字符用的话是没有区别的,但当整数用时有区别: char 整数范围为-128到127,而unsigned char 整数范围为0到255多数情况下,char ,signed char 、unsigned char 类型的数据具有相同的特性然而当你把一个单字节的数赋给一个大整型数域时,便会看到它们在符号扩展上的差异。转载 2008-11-03 11:29:00 · 5592 阅读 · 0 评论 -
回调函数
回调函数 程序员常常需要实现回调。本文将讨论函数指针的基本原则并说明如何使用函数指针实现回调。注意这里针对的是普通的函数,不包括完全依赖于不同语法和语义规则的类成员函数(类成员指针将在另文中讨论)。 声明函数指针 回调函数是一个程序员不能显式调用的函数;通过将回调函数的地址传给调用者从而实现调用。要实现回调,必须首先定义函数指针。尽管定义的语法有点不可思议,但如果你熟悉函数声明的一般方法,便会发现转载 2008-11-03 16:21:00 · 622 阅读 · 0 评论 -
map和vector的查找方法
在写程序的时候,需要经常在map或者vector中查找符合条件的记录,而在map和vector中都没有提到查找函数。在本文中,详细说明了find_if用在map和vector中的用法。我们首先看下在STL中find_if是怎样实现的,然后就能写出针对各种类型的find_if函数. //定义在STL实现代码stl_algo.h中template class In转载 2008-10-20 15:51:00 · 998 阅读 · 0 评论 -
C++中extern “C”含义深层探索
1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同。转载 2008-08-04 15:16:00 · 571 阅读 · 0 评论 -
C/C++中的日期和时间
C/C++中的日期和时间作者:日期和时间 出处:日期和时间 更新时间: 2005年09月15日摘要:本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时、时间的获取、时间的计算和显示格式等方面进行了阐述。本文还通过大量的实例向你展示了time.h头文件中声明的各种函数和数据结构的详细使用方法。关键字:UTC(世界标准时间),Calendar Time原创 2008-05-16 17:47:00 · 727 阅读 · 0 评论 -
vector的有序化操作
vector的有序化操作 在有些情况下,需要用到一个有序的vector。它的有序操作有三种:查找,插入,删除。 插入实现:template typename Container>inline void ordered_insert(Container& c, typename Container::value_type const& t){ c.insert(std::u转载 2008-03-28 08:29:00 · 2096 阅读 · 0 评论 -
C++中STL中的map用法详解
STL中map用法详解 说明:如果你具备一定的C++ template知识,即使你没有接触过STL,这个文章你也应该可能较轻易的看懂。本人水平有限,不当之处,望大家辅正。一.Map概述Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据原创 2008-03-27 16:53:00 · 1779 阅读 · 3 评论 -
C/C++ 程序设计员应聘常见面试试题深入剖析
本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵。文中的大多数面试题来自各大论坛,部分试题解答也参考了网友的意见。许多面试题看似简单,却需要深厚的基本功才能给出完美的解答。企业要求面试者写一个最简单的strcpy函数都可看出面试者在技术上究竟达到了怎样的程度,我们能真正写好一个strcpy函数吗?我们都觉得自己能,可是我们写出的strcpy很可能只能拿到10转载 2008-03-26 17:16:00 · 842 阅读 · 1 评论 -
字符串处理函数大全(四)
strncmp转载 2008-03-10 14:10:00 · 1002 阅读 · 1 评论 -
字符串处理函数大全(三)
strchr转载 2008-03-10 14:07:00 · 1395 阅读 · 0 评论 -
字符串处理函数大全(二)
memcpy原创 2008-03-10 14:04:00 · 857 阅读 · 0 评论 -
字符串处理函数大全(一)
bcmp转载 2008-03-10 14:01:00 · 819 阅读 · 0 评论 -
C语言中打印int值的二进制形式
这个,我们先介绍掩码的概念。掩码是个常量或变量,用于从另一个变量或表达式提取所需要的位。由于int常量1的二进制表达形式如下:00000000 00000000 00000000 00000001 它可以用于判断一个int表达式的低端位。下面的代码使用了这个掩码,打印出一个0和1交替的序列: int i,mask=1;for(i=0;i如果我们想在一个表达式中找到一个原创 2007-06-26 10:02:00 · 2462 阅读 · 0 评论 -
C程序中访问命令行参数
C语言提供了与命令行参数的连接。一般情况下为了访问命令行参数,我们可以使用这样的代码:#includeint main(int argc,char *argv[]){............} C语言中main()函数可以接受两个参数。argc参数表示参数的数量,它的值就是命令行的参数数量。argv参数表示参数向量,它是一个数组,数组元素是char类型的指针。原创 2007-06-24 16:24:00 · 1405 阅读 · 0 评论 -
C语言中多个文件的编译方法
今天刚刚搞明白这个问题,贴出来希望能给一些和我一样不是很懂的人一些参考,可惜的是我用的方法还不是特别方便, 以后有了更好的方法会继续和大家分享的。这里我以一个经典的汉诺塔问题为例来进行说明。【问题描述】有三个塔分别标为A、B、C。开始时,塔A上套了n个盘子。这里假定为3个。这些盘子的标号从1到3。并且在不失一般化的前提下,我们可以假设每个盘子的直径和它的标号相同。也就是说,盘子1的直径为1原创 2007-06-25 18:14:00 · 3339 阅读 · 0 评论 -
rand()和srand()产生伪随机数的方法总结
标准库 (被包含于 中)提供两个帮助生成伪随机数的函数: 函数一:int rand(void); 从srand (seed)中指定的seed开始,返回一个[seed, RAND_MAX(0x7fff))间的随机整数。 函数二:void srand(unsigned seed); 参数seed是rand()的种子,用来初始化rand()的起始值。 可以认为rand()在每次被转载 2008-03-13 10:18:00 · 690 阅读 · 0 评论 -
关于printf的大部分参数详解
关于printf的大部分参数详解 #include /************************************************************************///转载 2008-03-12 17:34:00 · 701 阅读 · 0 评论 -
Select()系统调用及文件描述符集fd_set的应用
在网络程序中,一个进程同时处理多个文件描述符是很常见的情况。select()系统调用可以使进程检测同时等待的多个I/O设备,当没有设备准备好时,select()阻塞,其中任一设备准备好时,select()就返回。 select()的调用形式为转载 2008-03-27 14:29:00 · 893 阅读 · 0 评论 -
Windows 的动态链接库(DLL)中获得dll自身的名称
很简单,只需在DllMain中使用GetModuleFileName即可.代码大致如下:#define STR_SZ 256BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved){ TCHAR str[STR_SZ]={0}; switch( fdwReason ) {转载 2008-03-28 08:35:00 · 1437 阅读 · 0 评论 -
libpcap结构详解
pcap_pkthdr结构 [路径]/usr/include/pcap.h /* * Each packet in the dump file is prepended with this generic header. * This gets around the problem of different headers for different * packet interfac原创 2008-03-24 12:05:00 · 1532 阅读 · 1 评论 -
HTTP协议分析
对HTTP协议进行分析:测试环境:WIN 2K -SP4Apache/1.3.29 (Win32)IE 6.0Firefox/1.0测试步骤:1:先建立TCP连接。2:发送如下请求:GET /index.html HTTP/1.1Accept:*?*Accept-Language: zh-cnUser-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windo原创 2008-03-22 16:54:00 · 1556 阅读 · 0 评论 -
libpcap函数库详细介绍
Libpcap开发集介绍 libpcap是一个C语言库,libpcap的英文意思是 Packet Capture library,即数据包捕获函数库,其功能是通过网卡抓取网络以太网中的数据包。这个库为不同的平台提供了一致的c函数编程接口,在安装了 libpcap 的平台上,以 libpcap 为接口写的程序、应用,能够自由地跨平台使用。它支持多种操作系统。libpcap 结构简单,使转载 2008-03-21 11:58:00 · 7660 阅读 · 3 评论 -
C++多线程编程入门
前几天搞定了C++的多线程编程,今天闲来无事小做总结!【线程的概念】为了了解线程的概念,我们必须先讨论一下进程的概念。 一个进程通常定义为程序的一个实例。在Win32中, 进程占据4GB的地址空间。与它们在MS-DOS和16位Windows操作系统中不同, Win32进程是没有活力的。这就是说,一个Win32进程并不执行什么指令,它只是占据着4GB的地址空间,此空间中有应用程序EX原创 2008-03-18 10:05:00 · 2876 阅读 · 1 评论 -
有球1000盒10,问各盒分别放几球,能保证若干盒能组成1-1000内任意数?
今早来到CSDN里转了一圈,发现有个帖子《求教很难的面试题目》,打开一看,题目如下: 现有1000个球,10个盒子,问各个盒子内应该分别放入多少个球,才能达到需要1至1000 之间任何数量的球,你都可以用若干盒子组合出来(用C/C++编写程序) 惭愧的是刚看到这个这个题目时竟然真的想不到思路了,哎,看来还是需要扩展视野啊!下面是一些前辈的解法,贴来和大家一起学习!原创 2008-03-18 09:53:00 · 1897 阅读 · 1 评论 -
用C++实现网络编程---抓取网络数据包的实现方法
做过网管或协议分析的人一般都熟悉sniffer这个工具,它可以捕捉流经本地网卡的所有数据包。抓取网络数据包进行分析有很多用处,如分析网络是否有网络病毒等异常数据,通信协议的分析(数据链路层协议、IP、UDP、TCP、甚至各种应用层协议),敏感数据的捕捉等。下面我们就来看看在windows下如何实现数据包的捕获。 下面先对网络嗅探器的原理做简单介绍。嗅探器设计原理 嗅探器作为一种网络通原创 2008-03-17 12:30:00 · 6691 阅读 · 1 评论 -
C语言输入输出的重定向
许多操作系统,包括MS-DOS和UNIX,可以对输入输出进行重定向。为了理解这个机制,首先考虑下面这个UNIX命令:ls这个命令在屏幕上显示文件的目录列表(MS-DOS中的对应命令是DIR)。现在考了下面这个命令:ls>tmp符号>导致操作系统把这个命令的输出重定向到tmp文件。原来在屏幕上输出的内容现在写入到tmp文件中。我们来看下面这个程序。它在使用时可以对输入输出进原创 2007-06-24 16:43:00 · 6524 阅读 · 3 评论