C And C++
文章平均质量分 75
kunp
非典型技术人员,国内最早的移动互联网公司PICA的创始员工,曾任PICA技术副总裁。国内领先的HTML5游戏公司的创始人,千万人在线的即时通信系统架构师。领导开发了过千万用户的移动社交平台。
展开
-
使用stringstream对象实现数据类型之间的转换
很多人都使用传统的C 库来进行数据类型之间的转换,这将会导致很多问题,因为这样的转换方法存在很多危险的陷阱。比如itoa()这个函数在标准库中是不存在的。标准的库提供了一种更好的转换选择,因为这一方法更加安全,自动,直接。 让我们来看一个具体的范例。假设你想把一个int转换为string。为了达到这一目的,你必须遵循如下的步骤: 1. 建立一个stringstream对象, 2.使用操原创 2004-06-30 14:13:00 · 5114 阅读 · 2 评论 -
C标准中一些预定义的宏
C标准中一些预定义的宏 C标准中指定了一些预定义的宏,对于编程经常会用到。下面这个表中就是一些常常用到的预定义宏。宏意义__DATE__进行预处理的日期(“Mmm dd yyyy”形式的字符串文字)__FILE__代表当前源代码文件名的字符串文字__LINE__代表当前源代码中的行号的整数常量__TIME__源文件编译时间,格式微“hh:mm:ss”__func__当前所在函数名原创 2005-09-27 16:28:00 · 1261 阅读 · 0 评论 -
动态链接库*.so的编译与使用
动态链接库*.so的编译与使用 动态库*.so在linux下用c和c++编程时经常会碰到,最近在网站找了几篇文章介绍动态库的编译和链接,总算搞懂了这个之前一直不太了解得东东,这里做个笔记,也为其它正为动态库链接库而苦恼的兄弟们提供一点帮助。1、动态库的编译下面通过一个例子来介绍如何生成一个动态库。这里有一个头文件:so_test.h,三个.c文件:test_a.c、test_b.c、t原创 2005-05-17 13:16:00 · 4950 阅读 · 0 评论 -
FreeTDS的安装与配置
FreeTDS的安装与配置——linux下连接MSSSQL 在linux下连接MSSQL是一件很痛苦的事,因为微软同志没有提供任何接口给开发人员,大约他们认为要用MSSQL的,只可能是windows的操作系统。还好,MSSQL是从Sybase衍生出来的,有一些哥们做了一些Sybase的Linux下的连接库,这些连接库同时也能支持MSSQL,FreeTDS就是这样的一个东东。原创 2005-06-03 12:52:00 · 9489 阅读 · 3 评论 -
重学C++(1)——几个常常忽视的简单的类的问题
重新开始学习C++,发现了几个很容易忽视的问题:1、构造函数的值拷贝,对于指针而言是直接拷贝地址2、const后的类,只能使用const的成员函数3、对于const成员函数,使用指针和引用可以破坏const性,从而修改类中成员的值下面程序来说明这几个问题:text.cpp#include #include #include using namespace std;class Text{ frien原创 2005-10-12 16:04:00 · 1393 阅读 · 0 评论 -
重学C++(3)——用C++实现简单的文件I/O操作 (ZZ)
一、ASCII 输出 为了使用下面的方法, 你必须包含头文件(译者注:在标准C++中,已经使用取代,所有的C++标准头文件都是无后缀的。)。这是 的一个扩展集, 提供有缓冲的文件输入输出操作. 事实上, 已经被包含了, 所以你不必包含所有这两个文件, 如果你想显式包含他们,那随便你。我们从文件操作类的设计开始, 我会讲解如何进行ASCII I/O操作。 如果你猜是"fstream," 恭喜你答原创 2005-10-25 19:35:00 · 2094 阅读 · 0 评论 -
重学C++(2)——指向类成员的指针
指向类成员的指针,印象中似乎很少用到,重新学习C++的过程中,才发现自己是忽视了一个很重要的东东,以前我一直认为类的成员函数不能作为回调函数,所以很多C程序都始终无法移植到C++上来,现在才知道,这是对指向类成员的指针不了解的缘故。1、指向非静态成员的指针其实指向非静态的类成员的指针很容易,它们与普通指针唯一的区别是,他们受类的限制。如下:class A{ int _val; int原创 2005-10-17 15:54:00 · 2789 阅读 · 0 评论 -
C语言实现二进制文件读写
C语言实现二进制文件读写 我一直觉得二进制文件读写是个很容易的事,所以一直没在意,最近在写一个http客户端,实现文件下载的时候,发现总有问题,后来才发现是忘记写文件用二进制方式,惭愧的很啊。然后,就在网上搜索了一下,发现通过C语言实现二进制文件读写的资料居然出奇的少,这让我很愤怒,因为虽然这东西很简单,但是对于初学者,往往会需要花很长的时间去弄,一旦明白,又发现花的时间很不值得,罢了,这里通过一原创 2005-10-25 15:42:00 · 18644 阅读 · 6 评论 -
一个简单的http下载程序
最近研究了一下http协议,用C++在linux下写了一个简单的http下载程序,程序的功能很简单,在终端输入文件所在网址,程序会单线程从服务器上下载该文件到本地。程序里面涉及了socket编程、http协议、二进制文件的写入。有兴趣的兄弟可以随便看看,玩具而已,大家一起玩玩了。对于Http协议不是很了解的兄弟,可以去http://biz.chinabyte.com/209/2151709.sht原创 2005-10-31 11:36:00 · 2476 阅读 · 0 评论 -
STL函数对象
《C++必知必会》还真是不错,上一章讲到用函数对象替换函数指针,今天翻了翻,又看到讲到STL函数对象,其实道理和上一章也差不多,唯一不同的是,如果用STL函数对象,必须记得,这些函数对象都是继承标准函数对象:std::binary_function(二元函数)、std::unary_function(一元函数)。还是重载operator()操作符。这样的STL函数,可以成为内联函数,并且可以用标准原创 2006-03-16 17:02:00 · 2195 阅读 · 3 评论 -
函数对象替代函数指针作回调函数
函数指针实在是个讨厌的东西,说实话,我很讨厌他的语法,非常丑陋,而且有很多局限性,起码不能保有数据,函数对象是一个替换函数指针的好东东,通过重载operator()操作符,可以实现与函数指针几乎完全一致的功能。最近在看《C++必知必会》,里面讲到用函数对象替代函数指针,还有例子,觉得很好,贴出来,供兄弟们一起参考研究。下面的代码并不复杂,先定义了一个基类函数对象Action,Button类带有原创 2006-03-14 16:38:00 · 2378 阅读 · 3 评论 -
用C++写的一个urlcode的例子
urlencode的规则其实很简单,搜索了半天,才找到原理,看了看其他人写的例子,csdn上有一个哥们用vc写了一个例子,感觉不过瘾,用c++重写了一个,个人感觉已经足够简单了,希望对初学者有用。URLEncode是这样编码的 1。数字和字母不变。2。空格变为"+"号。3。其他被编码成"%"加上他们的ascii的十六进制,规律是这样的 比如“啊”字 Ascii的十六进制是B0A1——>%B0%原创 2007-05-08 20:36:00 · 1554 阅读 · 1 评论 -
ASCII码对照表
这玩意还蛮重要的,留一个备份好了。0-127128-255原创 2005-09-22 16:45:00 · 3027 阅读 · 0 评论 -
fork函数
fork函数 在linux中,只有一个函数可以创建子进程:fork。 #include #include pid_t fork(void); 由f o r k创建的新进程被称为子进程( child process)。该函数被调用一次,但返回两次。两次返回的区别是子进程的返回值是0,而父进程的返回值则是新子进程的进程I D。将子进程I D返回给父进程的原创 2005-04-17 18:17:00 · 35827 阅读 · 12 评论 -
判断目录是否存在
判断目录是否存在 写日志时,经常可能需要用到log这样的目录,通过调用 DIR *opendir(const char * p a t h n a m e) ; 这个函数来判断指定目录是否存在,不存在则使用 int mkdir(const char * p a t h n a m e, mode_t m o d e); 来创建该目录。下面一个小程序便是对目原创 2005-04-07 20:00:00 · 2142 阅读 · 0 评论 -
jabber技术概况
Jabber 技 术 概 况Jabber即时通信系统服务整体框架的概述1、Jabber技术概述 本文档包括以下内容:? Introduction 简介? Foundations 基本知识? High-Level Server Architecture高阶服务体系? Basi原创 2004-06-30 13:20:00 · 11679 阅读 · 8 评论 -
free struct,内部指针并不free
C的struct的内存管理需要小心,尤其是struct内部还有指针的情况,free掉一个struct结构的指针,如果其struct内部有指针,该指针内容不释放,这个在调用别人写好的struct接口时,会相当麻烦,这就要求对方除了提供struct接口外,还提供额外的内存管理支持,否则很容易出现问题,在这点上,C++的构造函数、析构函数明显表现要好的多,下面是一个free struct的C的例子:原创 2004-09-14 11:39:00 · 2140 阅读 · 11 评论 -
The MySQL C API 编程实例
在网上找了一些MYSQL C API编程的文章,看了后觉得还是写的不够充分,根据自己经验写了这篇《The MySQL C API 编程实例》,希望对需要调用到MYSQL的C的API的朋友有所帮助,附例中的环境为RedHat 在这篇文章里,我们将学会怎么使用MySQL 的C APIs(Application Programming Interfaces 编程接口)。为了很好地了解这篇文章,原创 2004-11-05 12:46:00 · 19417 阅读 · 14 评论 -
copy构造函数和assign构造函数的调用
copy构造函数和assign构造函数的调用很有趣,下面有个好玩的例子#include #include using namespace std;class CAT{public: CAT(int a):num(a){ cout CAT(const CAT& rsh){num=rsh.num;cout CAT& operator =(const CAT& r原创 2004-11-01 17:56:00 · 878 阅读 · 1 评论 -
C程序中main的参数
C程序中main的参数命令行界面的程序,通常都需要输入命令行参数帮助程序执行。假定有一个可执行程序名为test。那么运行该程序的的命令行如下: test 带命令行参数是同一行中的附加项: test –c TEST 其中 –c 和 TEST就是命令行参数。C程序可以将这些附加参数读出来,并为自己所用,比如作为程序运行的条件(经常看到原创 2005-01-07 11:36:00 · 2516 阅读 · 0 评论 -
C语言中对文件的随机存取
C语言中对文件的随机存取C语言中要实现对文件的随机存取,需要用到两个函数fseek()、ftell()。下面通过一个反转显示指定文件的程序来介绍这两个函数的用法。reserve.c: #include #include #define CNTL_Z /032 //DOS 文本中的文件结尾标记 #define SLEN 50 int m原创 2005-01-08 18:17:00 · 2159 阅读 · 0 评论 -
linux下字符集编码转换轻松实现(ZZ)
作者:zhaojianjun出处:http://www.opendesktop.net/modules/...dex.php?B_ID=78在LINUX上进行编码转换时,既可以利用iconv函数族编程实现,也可以利用iconv命令来实现,只不过后者是针对文件的,即将指定文件从一种编码转换为另一种编码。一、利用iconv函数族进行编码转换iconv函数族的头文件是iconv.h,使用前需包含之。#i原创 2005-02-05 10:45:00 · 7525 阅读 · 0 评论 -
函数的传递的参数是原参数的副本
函数的传递的参数是原参数的副本 使用C语言编程,不可能不用到函数,但是函数的参数传递,我们是否真的清楚了呢。本文主要介绍C语言中函数传递的参数。。 函数的参数通常分为两种,普通变量,指针变量。这些参数,将会被函数体调用,当让,也可以传入一些永远不被函数调用的参数,就像你声明了一些变量,却永远不用一样,在语法上是没有问题的。 那么,函数体内调用的传递过来的参数,与原创 2005-06-22 13:43:00 · 1709 阅读 · 1 评论 -
Linux下C语言编程基础(Makefile)
假设我们有下面这样的一个程序,源代码如下: /* main.c */ #include "mytool1.h" #include "mytool2.h" int main(int argc,char **argv) { mytool1_print("hello"); mytool2_print("hello"); } /* mytoo原创 2005-03-04 17:37:00 · 894 阅读 · 1 评论 -
几个好用的makefile
Makefile 用makefile来编译工程,对很多朋友来说都是一件麻烦而痛苦的事情,这里我写了几个makefile,专门提供给那些曾经被makefile困扰的朋友,根据生成的目标文件不同,我将makefile 分成了三份:生成可执行文件的makefile,生成静态链接库德makefile,生成动态链接库的makefile。 这些makefile都很简单,一般都是一看就会原创 2005-07-07 13:49:00 · 1768 阅读 · 0 评论 -
GNU make 指南 (转载)——这是一篇很不错的介绍makefile的文章
GNU make 指南 翻译: 哈少 译者按: 本文是一篇介绍 GNU Make 的文章,读完后读者应该基本掌握了 make 的用法。而 make 是所有想在 Unix (当然也包括 Linux )系统上编程的用户必须掌握的工具。如果你写的程序中没有用到 make ,则说明你写的程序只是个人的练习程序,不具有任何实用的价值。也许这么说有点 儿偏激,但 make 实在是应该用在任何稍具规模的程序中的原创 2005-07-07 13:53:00 · 1010 阅读 · 0 评论 -
使用getopt在Linux下获取命令行参数
使用Getopt在Linux下获取命令行参数 getopt在UNIX下的命令列程式特别好用,特别是在你有许多参数要加入时。一般来说,你可以透过「man 3 getopt」来获得其说明。这个函数很好用,也很简单,但网上关于这个函数的中文介绍实在是少之又少,这篇文章就简单讲述一下如何利用getopt函数来获取参数,希望能给那些被参数读取弄得有一点点烦躁的朋友有一点点帮助。1、原创 2005-07-22 15:10:00 · 4798 阅读 · 0 评论 -
Boost初体验
知道boost很久了,一直没有时间去看,今天空下来时间,决定搞一下boost。 用百度搜索了一下boost,相关的内容很少,大部分都是讲boost如何安装的。具体如何使用,涉猎的很少,不知道是会用boost的同学觉得 boost用法太简单,不需要描述,还是因为英文文档已经足够,不需要再做翻译这样的无用功。但我一向认为,中国大多数程序员,英文水平都是非常有限的, 包括我在内,看到英文文档就会头疼。原创 2007-11-23 17:44:00 · 1051 阅读 · 0 评论