07 2012 档案
摘要:服务端程序代码:1//BoostServer.cpp:定义控制台应用程序的入口点。2//34#include"stdafx.h"5#include<iostream>6#include<boost/asio.hpp>78usingnamespaceboost::asio;9#defineBLOCK_SIZE64*10241011intmain(intargc,char*argv[])12{13//所有asio类都需要io_service对象14io_serviceiosev;15ip::tcp::acceptoracceptor(iosev,16ip
阅读全文
摘要:http://stlchina.huhoo.net/bin/view.pl/Main/STLDetailString添加#include<fstream>using namespace std; View Code 1//ofstreammyfile("c:\\1.txt",ios::out|ios::trunc);2//3//myfile<<"中国国国"<<endl<<"网"<<"wgk";4//myfile.close();56ifstreammfil
阅读全文
摘要:Map是c++的一个标准容器,它提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作! 1. map构造函数; map<string , int >mapstring; map<int ,string >mapint; map<sring, char>mapstring; map< char ,string>mapchar; map<char ,int>mapchar; map<int ,char >mapint; 2. map添加数据; map<int ,st
阅读全文
摘要:VA_LIST 是在C语言中解决变参问题的一组宏 他有这么几个成员: 1) va_list型变量: #ifdef _M_ALPHAtypedef struct { char *a0; /* pointer to first homed integer argument */ int offset; /* byte offset of next parameter */} va_list;#elsetypedef char * va_list;#endif 2)_INTSIZEOF 宏,获取类型占用的空间长度,最小占用长度为int的整数倍: #define _INTSIZEOF(n) ( (si
阅读全文
摘要:怎样写出一个可以处理想printf一样能够处理可变长参数的函数呢。看printf的定义:int printf(char *fmt, ...);C语言标准库中头文件stdarg.h索引的接口包含了一组能够遍历变长参数列表的宏。主要包含下面几个:1、va_list 用来声明一个表示参数表中各个参数的变量。2、va_start 初始化一个指针来指向变长参数列表的头一个变量(注意,...只能出现在参数表的最后)3、va_arg每次调用时都会返回当前指针指向的变量,并将指针挪至下一个位置,参数的类型需要在这个调用的第二个参数来指定,va_arg也是根据这个参数来判断偏移的距离。4、va_end需要在函数
阅读全文
摘要:格式: echo "\033[字背景颜色;字体颜色m字符串\033[0m" 例如: echo "\033[41;36m something here \033[0m" 其中41的位置代表底色, 36的位置是代表字的颜色 那些ascii code 是对颜色调用的始末. \033[ ; m …… \033[0m 字背景颜色范围:40----49 40:黑 41:深红 42:绿 43:黄色 44:蓝色 45:紫色 46:深绿 47:白色 字颜色:30-----------39 30:黑 31:红 32:绿 33:黄 34:蓝色 35:紫色 36:深绿 37:白
阅读全文
摘要:#include<iostream>#include<list>#include<numeric>#include<algorithm>usingnamespacestd;//创建一个list容器的实例LISTINTtypedeflist<int>LISTINT;//创建一个list容器的实例LISTCHARtypedeflist<int>LISTCHAR;voidmain(void){//--------------------------//用list容器处理整型数据//------------------------
阅读全文
摘要:成员函数(Member functions) (constructor) 构建字符串对象 (构造函数成员) operator= 字符串赋值 (公有成员函数) 以下全为公有成员函数迭代器(Iterator) begin 返回指向字符串开始处的迭代器 end ...
阅读全文
摘要:vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的.用法: 1.文件包含: 首先在程序开头处加上#include<vector>以包含所需要的类文件vector 还有一定要加上using namespace std; 2.变量声明: 2.1 例:声明一个int向量以替代一维的数组:vector <int> a;(等于声明了一个int数组a[],大小没有指定,可以动态的向里面添加删除)。 2.2 例:用vector代替二维数组.其实只要声明一个一维数
阅读全文
摘要:在C/C++中,我们平时写程序可能经常会用到typedef关键字和#define宏定义命令,在某些情况下使用它们会达到相同的效果,但是它们是有实质性的区别,一个是C/C++的关键字,一个是C/C++的宏定义命令,typedef用来为一个已有的数据类型起一个别名,而#define是用来定义一个宏定义常量。下面谈谈两者在实际使用中应当注意的地方。 1.typedef关键字 typedef是用来声明类型别名的,在实际编写代码过程使用typedef往往是为了增加代码的可读性。它可以为一串很长的类型名起一个别名,那么使用这个别名可以达到与原类型名相同的效果。 如:typedef int INT;type
阅读全文
摘要:在面向对象的C++语言中,虚函数(virtualfunction)是一个非常重要的概念。因为它充分体现 了面向对象思想中的继承和多态性这两大特性,在C++语言里应用极广。比如在微软的MFC类库中,你会发现很多函数都有virtual关键字,也就是说, 它们都是虚函数。难怪有人甚至称虚函数是C++语言的精髓。那么,什么是虚函数呢,我们先来看看微软的解释:虚函数是指一个类中你希望重载的成员函数,当你用一个基类指针或引用指向一个继承类对象的时候,你调用一个虚函数,实际调用的是继承类的版本。 ...
阅读全文
摘要:ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间;在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符:1、插入器(<<) 向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout<<"Write Stdout"<<'\n';就表示把字符串"Write Stdout"和换行字符('\n')输出到标准输出流。2、析取
阅读全文
摘要:strcpy和memcpy都是标准C库函数,它们有下面的特点。strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。已知strcpy函数的原型是:char* strcpy(char* dest, const char* src);memcpy提供了一般内存的复制。即memcpy对于需要复制的内容没有限制,因此用途更广。void*memcpy(void*dest,constvoid*src,size_tcount);?char* strcpy(char* dest, constchar* src) // 实现src到dest的复制{
阅读全文
摘要://log.h//hujinshan@2004.1.3 Airforce Engineering University/*//CLog* CLog::_instance = NULL;CLog::GetObj().Write( "*******初始化完成*******" );CLog::GetObj().tmWrite( "*******开始渲染No1. *******" );CLog::GetObj();在Clog文件中有#define CLog /##/的语句,这是为了使日志在release版无效,使用单行注释,所以如果调用时如果要换行,请务必在换行
阅读全文
摘要:0 前言准C++线程即将到来。CUJ预言它将衍生自Boost线程库,现在就由Bill带领我们探索一下Boost线程库。就在几年前,用多线程执行程序还是一件非比寻常的事。然而今天互联网应用服务程序普遍使用多线程来提高与多客户链接时的效率;为了达到最大的吞吐量,事务服务器在单独的线程上运行服务程序;GUI应用程序将那些费时,复杂的处理以线程的形式单独运行,以此来保证用户界面能够及时响应用户的操作。这样使用多线程的例子还有很多。>但是C++标准并没有涉及到多线程,这让程序员们开始怀疑是否可能写出多线程的C++程序。尽管不可能写出符合标准的多线程程序,但是程序员们还是会使用支持多线程的操作系统提
阅读全文
摘要:声明 by NetMD:并非我的原创,来自互联网,且是两篇帖子的合集,个人觉得这样才比较完备----------------------------------------------------------------------Q:什么是C风格转换?什么是static_cast, dynamic_cast 以及 reinterpret_cast?区别是什么?为什么要注意?A:转换的含义是通过改变一个变量的类型为别的类型从而改变该变量的表示方式。为了类型转换一个简单对象为另一个对象你会使用传统的类型转换操作符。比如,为了转换一个类型为doubole的浮点数的指针到整型:代码:int i;do
阅读全文
摘要:解压gSoap2.8通过WSDL文档,生成C/C++头文件执行gsoap-2.8/gsoap/bin/linux386/wsdl2h -o soapPHP.h Service.wsdl拷贝gSOAP源代码中import文件夹下的stlvector.h文件到TestHeader.h同一目录,如果在解析WSDL文档时使用了-s参数,即不使用STL,则不需要拷贝这一文件。gsoap-2.8/gsoap/bin/linux386/soapcpp2 -c soapPHP.h如:soapcpp2 -i -x -C -L calc.h这一步将会得到几个. nsmap、.h和.cpp文件,如:calc.nsm
阅读全文
摘要:一:目录操作首先介绍的是一个从目录读取的函数,opendir(),readdir(),closedir(),使用的时候是先打开文件句柄,而后迭代列出:<?php$base_dir = "filelist/";$fso = opendir($base_dir);echo $base_dir."<hr/>" ;while($flist=readdir($fso)){echo $flist."<br/>" ;}closedir($fso)?>这是讲返回文件目录下面的文件已经目录的程序(0文件将返回fals
阅读全文
摘要:missing: line 46: aclocal-1.10: command not foundWARNING: `aclocal-1.10' is needed, and you do not seem to have it handy on your system. You might have modified some files without having the proper tools for further handling them. Check the `README' file, it often tells you about the needed.
阅读全文
摘要:在这里先介绍标准的webservice。那么如何创建wsdl呢?对于PHP来说这确实是件很不容易的事情,有人说用zend studio创建很方便,这是一种方法。但对于那些不喜欢用zend studio的人来说,会觉得创建一个web service还要安装zend studio,太强人所难了。 在这里介绍一个简单的方法,到网上下载SoapDiscovery.class.php类,里面有个公用方法:getWSDL,这个方法末尾是用的return,那么,你修改一下这个方法://return sprintf('%s%s%s%s%s%s', $headerWSDL, $portTypeW
阅读全文
摘要://参考 http://prglab.com/cms/pages/c-tutorial/advanced-concepts/templates.php函数模板( Function templates) 模板(Templates)使得我们可以生成通用的函数,这些函数能够接受任意数据类型的参数,可返回任意类型的值,而不需要对所有可能的数据类型进行函数重载。这在一定程度上实现了宏(macro)的作用。它们的原型定义可以是下面两种中的任何一个: template <class identifier> function_declaration; template <typename i
阅读全文
摘要:#include <string>//使用C++标准库的string类时using namespace std;//同上#include <sstream>#include <iostream>#include <stdlib.h>//要将string类和int类型直接转换最好有这些包含, //因为自己写一个转换函数比较方便,函数定义参考如下:string getstring(const int n){std::stringstream newstr;newstr<<n;return newstr.str();}string转CStr
阅读全文
摘要:C/C++是最主要的编程语言。这里列出了50名优秀网站和网页清单,这些网站提供c/c++源代码 。这份清单提供了源代码的链接以及它们的小说明。我已尽力包括最佳的C/C++源代码的网站。这不是一个完整的清单,您有建议可以联系我,我将欢迎您的建 议,以进一步加强这方面的清单。添加:http://www.boost.org/1、http://snippets.dzone.com/tag/c/--数以千计的有用的C语言源代码片段2、http://www.hotscripts.com/category/c-cpp/scripts-programs/Hotscripts --提供数以百计的C和C++脚本和
阅读全文
摘要:由于是Linux新手,所以现在才开始接触线程编程,照着GUN/Linux编程指南中的一个例子输入编译,结果出现如下错误:undefined reference to 'pthread_create'undefined reference to 'pthread_join'问题原因:pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread.a,所以在使用pthread_create()创建线程,以及调用 pthread_atfork()函数建立fork处理程序时,需要链接该库。问题解决: 在编译中要加 -lpthread参数 g
阅读全文
摘要:make[1]: Entering directory `/usr/local/sinasrv/PyCSF-1.0_Alpha_3@CSF-3.1.2_G2'gcc -I/usr/local/include -I./confparser -I./include -o csfd server.o protocol.o data.o mempool.o pipeline.o common.o main.o module.o monitor.o log.o -Wl -L/usr/local/lib -L./confparser -lconfparser -levent -lpthreadma
阅读全文
摘要:前言JSON是一个轻量级的数据定义格式,比起XML易学易用,而扩展功能不比XML差多少,用之进行数据交换是一个很好的选择JSON的全称为:JavaScript Object Notation ,顾名思义,JSON是用于标记javascript对象的,详情参考http://www.json.org/。本文选择第三方库JsonCpp来解析json,JsonCpp是比较出名的c++解析库,在json官网也是首推的。JsonCpp简介JsonCpp主要包含三种类型的class:Value Reader Writer。jsoncpp中所有对象、类名都在namespace json中,包含json.h即可
阅读全文
摘要:gcc和g++都是GNU(一个组织)的编译器。 1、对于.c后缀的文件,gcc把它当做是C程序;g++当做是C++程序; 2、对于.cpp后缀的文件,gcc和g++都会当做c++程序。 3、编译阶段,g++会调用gcc; 4、连接阶段,通常会用g++来完成,这是因为gcc命令不能自动和c++程序使用的库连接。 gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件转换成汇编语言,生成文件.s[编译器egcs] 3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as] 4.连接目标代码,生成可执行程序[链接器ld] [参数详解.
阅读全文
摘要:使用C++处理JSON数据交换格式一、摘要JSON的全称为:JavaScript Object Notation,顾名思义,JSON是用于标记Javascript对象的,JSON官方的解释为:JSON是一种轻量级的数据传输格式。本文并不详细介绍JSON本身的细节,旨在讨论如何使用C++语言来处理JSON。关于JSON更具体的信息,可参见JSON官网:http://www.json.org。http://json.org/json-zh.html二、本文选择处理JSON的C++库本文选择一个第三方库jsoncpp来解析JSON。jsoncpp是比较出名的C++ JSON解析库。在JSON官网也是
阅读全文
摘要:#include<iostream>#include<fstream>intmain(){ intlength; char*buffer; std::fstreamrfile; rfile.open("test.txt",std::fstream::in|std::fstream::binary); if(!rfile) { std::cerr<<"Opentest.txtfailed!"<<std::endl; return-1; } //getlengthoffile: rfile.seekg(0,st
阅读全文
摘要:1、下载安装libmemcached $ wget http://launchpad.net/libmemcached/1.0/0.44/+download/libmemcached-0.44.tar.gz$ tar xvzf libmemcached-0.44tar.gz $ cd libmemcached-0.44$ ./configure$ make$ sudo make installlibmemcached 默认安装在/usr/local/,头文件安装在/usr/local/include/libmemcachde/,动态库默认安装在/usr/local/lib/下。2、libmem
阅读全文
摘要:其实解决办法很容易,到rtppack.cpp中加上头文件string.h就好了,就是#include<string.h>
阅读全文
摘要:MD5算法的C++实现1. IntroductionMD5算法是一种消息摘要算法(Message Digest Algorithm),此算法以任意长度的信息(message)作为输入进行计算,产生一个128-bit(16-byte)的指纹或报文摘要(fingerprint or message digest)。两个不同的message产生相同message digest的几率相当小,从一个给定的message digest逆向产生原始message更是困难(不过据说我国的某个教授很善于从message digest构造message),因此MD5算法适合用在数字签名应用中。MD5实现简单,在3
阅读全文
摘要:boost最新版本下载地址:http://sourceforge.net/project/showfiles.php?group_id=7586&package_id=8041下载boost_1_39_0.tar.gztar -zxvf boost_1_39_0.tar.gz然后进入解压缩后的文件夹编译boost的编译器jamcd boost_1_39_0\tools\jam./build_dist.sh编译完后在这个目录下有编译出的bjam文件boost_1_39_0\tools\jam\stage\bin.Linuxx86把它copy到boost_1_39_0 然后在这个目录下运行
阅读全文
摘要:用php寫memcached,用c從memcached讀數據的時候會出現取回的value為亂碼的現象,在百度上查看到的有用php寫,用java讀出亂碼的情況,看到一篇講解說是 (原文)實現的過程中遇到一個困難:從memcached里取出來的value有時候是亂碼。經過大量的試驗,我發現了一個規律:頁面大小不超過64k的,取出來的值不存在亂碼問題。一旦超過這個值,就變成了亂碼。看來64k是個很敏感的大小。但是memcached的存放單個值的大小最大值是1M。64kb還小的很啊。於是,我試試直接用memcached的服務端命令把600kb的value存入到memcached里,結果是成功了。說明.
阅读全文