
C/C++基础知识与进阶
上古神器C/C++
zjg555543
技术改变世界
展开
-
如何根据操作系统的位数(32或64)来定义输出?
如何根据操作系统的位数(32或64)来定义输出?我使用了int64_t,使用printf输出一个int64_t整数时,对于32位系统,应使用%lld,对于64位系统,应使用%ld。我想将输出格式修饰符采用宏定义的方式事先定义好,Linux下貌似可以这样定义:#if __WORDSIZE == 64#define FDFS_INT64_FORMAT "%ld"#else#defi原创 2013-02-17 10:14:46 · 427 阅读 · 0 评论 -
常见C/C++ XML解析器比较
常见C/C++ XML解析器有tinyxml、XERCES、squashxml、xmlite、pugxml、libxml等等,这些解析器有些是支持多语言的,有些只是单纯C/C++的。如果你是第一次接触到XML解析,那么关于XML解析器的选择问题的确令人头疼,我们先看一下这些解析器有哪些特点。一、Xerces XML解析器官方网址:http://xerces.apache.org/xerce转载 2013-01-30 12:03:42 · 442 阅读 · 0 评论 -
C++的Json解析库:jsoncpp和boost
jsonc++treestringimagepair目录(?)[-]一 使用jsoncpp解析json二 使用Boost property_tree解析json三 两种解析库的使用经验JSON(JavaScript Object Notation)跟xml一样也是一种数据交换格式,了解json请参考其官网http://json.org,本文不再对json做介绍,转载 2013-01-30 11:42:24 · 675 阅读 · 0 评论 -
Boost库
目录简介分类字符串和文本处理库容器库迭代器库算法库函数对象和高阶编程库泛型编程库模板元编程预处理元编程库并发编程库数学和数字库排错和测试库数据结构库图像处理库输入输出库跨语言混合编程库内存管理库解析库编程接口库综合类库编译器问题的变通方案库展开简介分类字符串和文本处理库容器库转载 2013-01-29 13:48:01 · 520 阅读 · 0 评论 -
boost下载安装编译指南(windows 和 linux)
理论上,本文适用于boost的各个版本,尤其是最新版本1.47.0;适用于各种C++编译器,如VC6.0(部分库不支持),VS2003,VS2005,VS2008,VS2010,gcc,C++ Builder等。先总结一下Windows系统。 一、下载 首先从boost官方主页http://www.boost.org/下载最新版boost安装包,或者使用Subversion获取最新转载 2013-01-29 10:28:58 · 441 阅读 · 0 评论 -
《C++ Coding Standards》读书笔记
Table of Contents1 书籍信息2 Rule 0: 不要因为小事纠结3 Rule 1: 使用最高警报级别编译4 Rule 16: 尽量不使用宏5 Rule 19: 总是初始化变量6 Rule 25: 传参规则7 Rule 29: 重载拷贝构造函数避免隐式类型转换8 Rule 32: 明确类的类型8.1 值类8.2 基类8转载 2013-01-31 16:08:43 · 786 阅读 · 0 评论 -
C++ 引用的作用和用法
我的总结:引用的好处之一就是在函数调用时在内存中不会生成副本。引用总结(1)在引用的使用中,单纯给某个变量取个别名是毫无意义的,引用的目的主要用于在函数参数传递中,解决大块数据或对象的传递效率和空间不如意的问题。(2)用引用传递函数的参数,能保证参数传递中不产生副本,提高传递的效率,且通过const的使用,保证了引用传递的安全性。(3)引用与指针的区别是,指针通过某个指转载 2013-02-01 12:11:30 · 457 阅读 · 0 评论 -
static 变量 和 static 函数各有什么特点
一个例子:比如说你写了一个类Format,作用是格式化字符串.如果不用static函数,你需要这样用这个类:C/C++ code?123string s="100";Format f;cout如果使用static函数:C/C转载 2013-02-01 10:51:20 · 779 阅读 · 0 评论 -
const在函数前与函数后的区别
如果const关键字不涉及到指针,我们很好理解,下面是涉及到指针的情况: int b = 500; const int* a = &b; [1] int const *a = &b; [2] int* const a = &b;转载 2013-02-01 10:07:59 · 323 阅读 · 0 评论 -
c++ assert 的用法和注意事项
assert在程序的release版本中仍然有效(不要与VC中的ASSERT混淆),要使assert失效,只有在包含assert头文件(assert.h)的语句前定义NDEBUG宏或在编译器参数中添加-DNDEBUG参数。********************************************************相关文章转载*************************转载 2013-01-31 12:13:48 · 2599 阅读 · 0 评论 -
深入理解C++中的mutable关键字
mutalbe的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词。 在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。 我们知道,如果类的成员函数不会改变对象的状态,那么这个成员函数一般会声明成const的。但是,有些时候,我们需要在const的函数里面转载 2013-02-01 10:12:45 · 315 阅读 · 0 评论 -
C++ Virtual详解
Virtual是C++ OO机制中很重要的一个关键字。只要是学过C++的人都知道在类Base中加了Virtual关键字的函数就是虚拟函数(例如下面例子中的函数print),于是在Base的派生类Derived中就可以通过重写虚拟函数来实现对基类虚拟函数的覆盖。当基类Base的指针point指向派生类Derived的对象时,对point的print函数的调用实际上是调用了Derived的print函转载 2013-02-01 10:17:47 · 342 阅读 · 0 评论 -
C++重载operator的示例
以下示例中定义了一个class test, 重载了>等符号:#include#includeusing namespace std;class test{public:int v;/*构造函数*/test():v(0){}test(const int &a):v(a){}test(const test &t1):v(t1.v){} /*以下重转载 2013-02-01 11:35:22 · 503 阅读 · 0 评论 -
面向对象的三个基本特征-----封装、继承、多态
面向对象的三个基本特征是:封装、继承、多态。封装封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。继承面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类原创 2013-02-17 11:41:03 · 380 阅读 · 0 评论 -
const const const const!!!!!!!!!!!!这下还记不住你!!!1
如果const位于*的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于*的右侧,const就是修饰指针本身,即指针本身是常量。原创 2013-02-21 11:39:55 · 398 阅读 · 0 评论 -
Nginx源码剖析之内存池,与内存管理
Nginx源码剖析之内存池,与内存管理作者:July、dreamice、阿波、yixiao。出处:http://blog.youkuaiyun.com/v_JULY_v/。引言 Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯原创 2013-05-15 09:35:34 · 588 阅读 · 0 评论 -
我的C++编程命名规范
在软件开发过程中,代码的命名规范是一项很突出的内容。一套定义完整、结构清晰明了的命名规范将大大提升源代码的可读性和软件的可维护性。据考证,没有一种命名规则可以让所有的程序员都满意,程序设计教科书一般也不会指定命名规则。但是制定一套令开发组成员基本满意的命名规则,并在项目中贯彻实施,也是团队开发一项必不可少的工作。我将我的团队的实际工作中的命名规则整理如下: 第一部分:共性规则共原创 2013-08-02 14:10:08 · 328 阅读 · 0 评论 -
61条面向对象设计的经验原则
读通全篇,只发现共60条原则。还差一个! 你不必严格遵守这些原则,违背它们也不会被处以宗教刑罚。但你应当把这些原则看成警铃,若违背了其中的一条,那么警铃就会响起。-----Arthur J.Riel (1)所有数据都应该隐藏在所在的类的内部。p13 (2)类的使用者必须依赖类的共有接口,但类不能依赖它的使用者。p15原创 2013-08-12 16:24:57 · 354 阅读 · 0 评论 -
C++进阶书籍阅读顺序!
推荐的阅读顺序:level 1从>开始,短小精悍,可以对c++能进一步了解其特性以>作字典和课外读物,因为太厚不可能一口气看完level 2然后从>开始转职,这是圣经,请遵守10诫,要经常看,没事就拿来翻翻接着是>,个人认为Herb Sutter主席大人的语言表达能力不及Scott Meyers总是在教育第一线的好顺下来就是>和>,请熟读并牢记各条款当你读到这里转载 2013-01-31 14:28:34 · 428 阅读 · 0 评论 -
c++ coding standards
C++编程规范(中文版) .(C++ Coding Standards: 101 Rules, Guidelines, and Best Practices)- 0. 不拘小节(或:了解什么不需要被规范化)。- 1. 在高警告级别下干净地编译。- 2. 使用自动化的构建(build)系统- 3. 使用版本控制系统(version control system)。- 4. 在转载 2013-01-31 12:17:20 · 384 阅读 · 0 评论 -
Google C++ 风格指南 - 中文版
from http://code.google.com/p/google-styleguide/ 版本:3.133原作者:Benjy WeinbergerCraig SilversteinGregory EitzmannMark MentovaiTashana Landray翻译:YuleFoxyospaly项原创 2013-01-15 17:07:10 · 727 阅读 · 0 评论 -
三十分钟掌握STL
这是本小人书。原名是《using stl》,不知道是谁写的。不过我倒觉得很有趣,所以化了两个晚上把它翻译出来。我没有对翻译出来的内容校验过。如果你没法在三十分钟内觉得有所收获,那么赶紧扔了它。文中我省略了很多东西。心疼那,浪费我两个晚上。译者:karycontact:karymay@163.netSTL概述STL的一个重要特点是数据结构和算法的分离。尽管这是个简单的概念,但这种分离转载 2012-04-19 00:20:27 · 369 阅读 · 0 评论 -
std::map
映射和多重映射基于某一类型Key的键集的存在,提供对T类型的数据进行快速和高效的检索。对map而言,键只是指存储在容器中的某一成员。Map不支持副本键,multimap支持副本键。Map和multimap对象包涵了键和各个键有关的值,键和值的数据类型是不相同的,这与set不同。set中的key和value是Key类型的,而map中的key和value是一个pair结构中的两个分量。转载 2012-05-03 14:09:37 · 30575 阅读 · 1 评论 -
std::string详解
用 string来代替char * 数组,使用sort排序算法来排序,用unique 函数来去重1、Definestring s1 = "hello";string s2 = "world";string s3 = s1 + "," + s2 +"!\n";2、appends1 += ",shanshan\n";3、Compareif(s1 == s2)....转载 2012-05-03 14:16:57 · 1722 阅读 · 0 评论 -
c++ 设计模式
C++设计模式之Adapter一、功能 将一个类的接口转换成客户希望的另外一个接口,解决两个已有接口之间不匹配的问题。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。二、结构图(1)class adapter(2)object adapter三、实现和其他很多模式一样,学习设计模式的重点是学习每种模式的思想,而不应拘泥于它的某种具体结转载 2012-05-18 11:25:15 · 559 阅读 · 0 评论 -
c++ 开发规范
名称书写所有名称必须以英语实际意义相符,可以针对超长字符简写,简写规则以删除重复字母和元音字母为主例如:Manager,Server,Property,Management=>Mgmt文件名、命名空间、类名、函数名每一个单词第一个字母大写专有名词(AMR2、BICC)等同于普通单词私有函数(不需要外部模块理解)建议使用“_”为前缀例如:TestManager.cpp、原创 2012-05-18 11:58:04 · 459 阅读 · 0 评论 -
C++ STRING 和WSTRING 之间的互相转换函数
C++ STRING 和WSTRING 之间的互相转换函数#include std::string ws2s(const std::wstring& ws){std::string curLocale = setlocale(LC_ALL, NULL); // curLocale = "C";setlocale(LC_ALL, "chs");const wchar_t*转载 2012-08-29 10:37:41 · 863 阅读 · 1 评论 -
do/while(0)的妙用
在C++中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。但是,最近在读我们项目的代码时,却发现了do...while的一些十分聪明的用法,不是用来做循环,而是用作其他来提高代码的健壮性。 1. do...while(0)消除goto语句。通常,如果在一个函数中转载 2012-09-04 18:01:04 · 356 阅读 · 0 评论 -
使用 C++ 处理 JSON 数据交换格式
一、摘要JSON 的全称为:JavaScript Object Notation,顾名思义,JSON 是用于标记 Javascript 对象的,JSON 官方的解释为:JSON 是一种轻量级的数据传输格式。本文并不详细介绍 JSON 本身的细节,旨在讨论如何使用 C++ 语言来处理 JSON。关于 JSON 更具体的信息,可参见 JSON 官网:http://www.json.org。转载 2012-09-12 12:15:06 · 403 阅读 · 0 评论 -
std::string用法总结
在平常工作中经常用到了string类,本人记忆了不好用到了的时候经常要去查询。在网上摘抄一下总结一下,为以后的查询方便:string类的构造函数:string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初始化string类的字符操作:const char &operator[](int n)const;转载 2012-10-11 14:14:23 · 449 阅读 · 0 评论