读书笔记之:C++ Cookbook

这本书不是针对初学者的,这本书主要是讲解如何使用一些现成的类库,主要是C++标准库和Boost库

第1章 创建C++应用程序

1. 编译,链接,静/动态库

2.编译器

3. GNU编译器集(GCC)

4.Visual C++

5.intel编译器

6. Metrowerks编译器

7.Borland编译器

8. Comeau 编译器

9.Digital Mars 编译器

10. Cygwin与MinGW

11. 编译链接命令

12. 动态链接库

第2章 代码结构

2.2 保证一个跨多个源文件的变量只有一个实例存在

使用extern

2.3 使用向前的类声明来减少#include的使用

使用前向类声明,可以减少编译依赖,使用前向声明简单的创建名字,任何在这个头文件中的类都可以引用这个名字。链接器具有根据这个你在头文件中使用的名字来匹配实现文件中的定义的功能。

2.4 使用命名空间来阻止名字冲突

2.5 包含一个内联文件

创建一个.inl文件并且在你的头文件的尾部使用#include来包含它,这样完成的功能和你把函数的定义放在头文件的尾部是等价的,但是这样能够让你的声明和定义相分离。

第3章 数值计算

3.1 将字符串转换为数值

可以使用标准库或Boost库的lexical_cast类。

标准库中的strtol函数可以实现。

3.2 将数值转换为字符串

可以使用标准库中的stringstream类来存储字符串。

Boost库中的format类也可以实现这个

3.3 测试字符串中是否含有有效的数值

使用Boost库的lexical_cast函数模板来测试有效数值。这种方法可以包含一个减号或加号,但是不能有空格。

3.5 解析含有用科学计数法表示的数值的字符串

处理这个问题的最直接的方法就是使用标准库中的stringstream类

3.6 不同数值类型之间的转换

不同类型数值之间的转换最容易出现的问题就是溢出的问题。使用Boost库的numeric_cast类模板,可以进行运行时检测,如果发生上溢或下溢,将抛出一个bad_numeric_cast类型异常。

第4章 字符串与文本

4.1 填充字符串

string类的append和insert函数可以填充多个字符

4.2 裁剪字符串

erase函数

4.5 翻转字符串

使用标准库中的reverse函数可以完成。

4.6 分割字符串

使用标准库中的find函数来找到定界符,然后将对应的字串取出来。

4.9 在字符串中进行查找

4.10 查找第n个子字符串

4.11 从字符串中删除一个子字符串

4.12 将字符串转换为小写或大写

4.13 大小写不敏感的字符串比较

4.14 大小写不敏感的字符串查找

4.15 在文本文件中进行制表符与空格的相互转换

4.16 文本文件中的换行

4.17 计算文本文件中的字符数、字数和行数

4.18 计算文本文件中每个字的出现次数

4.19 给文本文件添加空白

4.20 调整文本文件

4.21 将文本文件中的多个空格压缩成一个

4.22 自动改正文本

4.23 读取由逗号分隔开的文本文件

4.24 使用正则表达式来分割字符串

需要使用boost中的regex库,注意在编译的时候需要指明需要加载的库

g++ -lboost_regex -o helloworld helloworld.cc

 

第5章 日期与时间

5.0 概述

5.1 获得当前日期与时间

5.2 将日期/时间格式化为一个字符串

5.3 日期与时间运算

5.4 在时区之间转换

5.5 确定一年中的某天

5.6 定义受限数据类型

第6章 数据管理

6.0 概述

6.1 使用矢量而不是数组

6.2 高效地使用矢量

6.3 矢量复制

6.4 将指针存储在矢量中

6.5 将对象存储在链表中

6.6 将字符串映射到其他事物

6.7 使用哈希函数

6.8 按顺序存储对象

6.9 容器存储

第7章 算法

7.0 概述

7.1 遍历容器

7.2 删除对象

7.3 随机打乱数据

7.4 比较元素

7.5 合并数据

7.6 排列元素

7.7 分割元素

7.8 在序列上进行集合运算

7.9 序列元素转换

7.10 编写自己的算法

7.11 把元素输出到数据流

第8章 类

8.0 概述

8.1 初始化类成员变量

8.2 使用函数创建对象

8.3 使用构造函数和析构函数管理资源

8.4 自动添加新的类实例

8.5 确保一个成员变量只有一个副本

8.6 在运行时确定对象的类型

8.7 确定某个对象的类是否是另一个类的子类

8.8 为类的每个实例指定一个唯一的标识符

8.9 创建单个类

8.10 创建含抽象基类的接口

8.11 编写一个类模板

8.12 编写一个成员函数模板

8.13 重载自增和自减运算符

8.14 为直观类行为重载算术和赋值操作符

8.15 调用一个超类虚函数

第9章 异常与安全性

9.0 概述

9.1 创建一个异常类

9.2 创建一个异常安全的构造函数

9.3 创建一个异常安全的初始化列表

9.4 创建异常安全的成员函数

9.5 安全地复制一个对象

第10章 数据流与文件

10.0 概述

10.1 文本输出对齐

10.2 格式化浮点数输出

10.3 编写自己的流操作程序

10.4 使类可写入流

10.5 使流可读取类

10.6 获取文件信息

10.7 文件复制

10.8 删除或重命名文件

10.9 创建一个临时文件名和文件

10.10 创建目录

10.11 删除目录

10.12 读取目录的内容

10.13 从字符串中提取文件扩展名

10.14 从完整路径中提取文件名

10.15 从完整路径和文件名中提取路径

10.16 替换文件扩展名

10.17 将两个路径组合成一个路径

第11章 科学与数学计算

11.0 概述

11.1 计算一个容器中元素的个数

11.2 查找最大或最小值

11.3 计算总和与平均值

11.4 过滤掉给定范围之外的值

11.5 方差、标准差及其他统计函数计算

11.6 生成随机数

11.7 使用随机数初始化容器

11.8 表示一个数目可变的数字矢量

11.9 表示一个数目固定的数字矢量

11.10 点积计算

11.11 计算矢量的范数

11.12 计算两个矢量之间的距离

11.13 实现一个跨步迭代器

11.14 实现一个大小可变的矩阵

11.15 实现一个大小固定的矩阵

11.16 矩阵相乘

11.17 计算快速傅里叶转换

11.18 使用极坐标

11.19 在位集上进行算术运算

11.20 表示固定宽度的大整数

11.21 实现固定小数位的数值

第12章 多线程

12.0 概述

12.1 创建一个线程

12.2 使资源是线程安全的

12.3 从一个线程中给另一个线程发送通知

12.4 只初始化一次共享资源

12.5 给线程函数传递一个参数

第13章 国际化问题

13.0 概述

13.1 硬编码Unicode字符串

13.2 读取数字

13.3 读取日期和时间

13.4 读取货币值

13.5 给本地化字符串排序

第14章 XML

14.0 概述

14.1 解析一个简单的XML文档

14.2 使用Xerces字符串

14.3 解析一个复杂的XML文档

14.4 XML文档操作

14.5 使用DTD验证一个XML文档

14.6 使用Schema验证一个XML文档

14.7 使用XSLT转换一个XML文档

14.8 评估一个XPath表达式

14.9 使用XML保存和还原对象集

第15章 杂项

15.0 概述

15.1 为回调使用函数指针

15.2 使用指向类成员的指针

15.3 确保函数不会修改参数

15.4 确保成员函数不会修改其对象

15.5 编写一个不是成员函数的操作符

15.6 初始化由逗号分隔开的数列

posted @ 2012-04-08 21:43  Mr.Rico  阅读(871)  评论(0编辑  收藏  举报