C++ Cookbook中文版
C++ Cookbook中文版
D. Ryan Stephens, Christopher Diggins, Jonathan Turkanis, Jeff Cogswell
金名, 周成兴 等 译
出版时间:2007年09月
页数:482
你想重新发明车轮吗?如果是,那么请你把这本书放回书架上,装作你从没有看见过它。但如果你是一个C++程序员,想让别人帮你把工作完成,从而希望把时间花费在新问题的解决上,那么请拿起这本书,直接去交款台吧,因为本书是关于C++程序设计日常问题的珍贵解决方案。
C++专家D. Ryan Stephens、Christopher Diggins、Jonathan Turkanis和Jeff Cogswell为你收集了大量的C++问题解决方案。本书所包含的主题有:
●数字计算
●字符串与文本操作
●日期与时间
●多线程
●基于流的输入/输出
●标准库算法与容器
●异常处理
●数学编程
●类和对象
●国际化
●用make创建应用程序
●Boost创建系统
●解析XML
通过本书,作者对当前C++程序设计中最现实的问题给出了实际的解决方案。作者在注重性能和可移植性的同时,强调了规则和标准。很多解决方案充分利用了C++标准库。作者还介绍了Boost库,它代表了C++世界的最好思想。
有时候,重新发明车轮会非常有趣,但如果你把时间花费在商业问题的求解上,你的效率就会高得多,你的回报也高。标准库可以帮助你,Boost库能帮助你,本书也能帮助你完成这些工作。使用本书中对常见问题的解决方案,你就可以把你的时间花在更有意思的工作上了。
  1. 前言
  2. 第1章 创建C++应用程序
  3. 1.0 概述
  4. 1.1 获得和安装GCC
  5. 1.2 从命令行创建“Hello, World”应用程序
  6. 1.3 从命令行创建静态库
  7. 1.4 从命令行创建动态库
  8. 1.5 从命令行创建复杂的应用程序
  9. 1.6 安装Boost.Build
  10. 1.7 使用Boost.Build 创建“Hello, World”应用程序
  11. 1.8 使用Boost.Build创建静态库
  12. 1.9 使用Boost.Build创建动态库
  13. 1.10 使用Boost.Build 创建复杂应用程序
  14. 1.11 使用IDE创建静态库
  15. 1.12 使用IDE创建动态库
  16. 1.13 使用IDE创建复杂应用程序
  17. 1.14 获得GNU make
  18. 1.15 使用GNU make创建“Hello, World”应用程序
  19. 1.16 使用GNU make创建静态库
  20. 1.17 使用GNU make创建动态库
  21. 1.18 使用GNU make创建复杂应用程序
  22. 1.19 定义宏
  23. 1.20 从IDE指定命令行选项
  24. 1.21 生成调试版程序
  25. 1.22 生成发布版程序
  26. 1.23 指定运行库
  27. 1.24 严格遵循C++标准
  28. 1.25 使源文件自动链接到指定的库
  29. 1.26 使用输出模板
  30. 第2章 代码结构
  31. 2.0 概述
  32. 2.1 确保头文件只包含了一次
  33. 2.2 保证一个跨多个源文件的变量只有一个实例存在
  34. 2.3 使用向前的类声明来减少#include的使用
  35. 2.4 使用命名空间来阻止名字冲突
  36. 2.5 包含一个内联文件
  37. 第3章 数值计算
  38. 3.0 概述
  39. 3.1 将字符串转换为数值
  40. 3.2 将数值转换为字符串
  41. 3.3 测试字符串中是否含有有效的数值
  42. 3.4 在限定精度内进行浮点数的比较
  43. 3.5 解析含有用科学计数法表示的数值的字符串
  44. 3.6 不同数值类型之间的转换
  45. 3.7 获得某种数值类型的最小和最大值
  46. 第4章 字符串与文本
  47. 4.0 概述
  48. 4.1 填充字符串
  49. 4.2 裁剪字符串
  50. 4.3 将字符串存储到字符系列中
  51. 4.4 获得字符串的长度
  52. 4.5 翻转字符串
  53. 4.6 分割字符串
  54. 4.7 标记字符串
  55. 4.8 连接字符串
  56. 4.9 在字符串中进行查找
  57. 4.10 查找第n个子字符串
  58. 4.11 从字符串中删除一个子字符串
  59. 4.12 将字符串转换为小写或大写
  60. 4.13 大小写不敏感的字符串比较
  61. 4.14 大小写不敏感的字符串查找
  62. 4.15 在文本文件中进行制表符与空格的相互转换
  63. 4.16 文本文件中的换行
  64. 4.17 计算文本文件中的字符数、字数和行数
  65. 4.18 计算文本文件中每个字的出现次数
  66. 4.19 给文本文件添加空白
  67. 4.20 调整文本文件
  68. 4.21 将文本文件中的多个空格压缩成一个
  69. 4.22 自动改正文本
  70. 4.23 读取由逗号分隔开的文本文件
  71. 4.24 使用正则表达式来分割字符串
  72. 第5章 日期与时间
  73. 5.0 概述
  74. 5.1 获得当前日期与时间
  75. 5.2 将日期/时间格式化为一个字符串
  76. 5.3 日期与时间运算
  77. 5.4 在时区之间转换
  78. 5.5 确定一年中的某天
  79. 5.6 定义受限数据类型
  80. 第6章 数据管理
  81. 6.0 概述
  82. 6.1 使用矢量而不是数组
  83. 6.2 高效地使用矢量
  84. 6.3 矢量复制
  85. 6.4 将指针存储在矢量中
  86. 6.5 将对象存储在链表中
  87. 6.6 将字符串映射到其他事物
  88. 6.7 使用哈希函数
  89. 6.8 按顺序存储对象
  90. 6.9 容器存储
  91. 第7章 算法
  92. 7.0 概述
  93. 7.1 遍历容器
  94. 7.2 删除对象
  95. 7.3 随机打乱数据
  96. 7.4 比较元素
  97. 7.5 合并数据
  98. 7.6 排列元素
  99. 7.7 分割元素
  100. 7.8 在序列上进行集合运算
  101. 7.9 序列元素转换
  102. 7.10 编写自己的算法
  103. 7.11 把元素输出到数据流
  104. 第8章 类
  105. 8.0 概述
  106. 8.1 初始化类成员变量
  107. 8.2 使用函数创建对象
  108. 8.3 使用构造函数和析构函数管理资源
  109. 8.4 自动添加新的类实例
  110. 8.5 确保一个成员变量只有一个副本
  111. 8.6 在运行时确定对象的类型
  112. 8.7 确定某个对象的类是否是另一个类的子类
  113. 8.8 为类的每个实例指定一个唯一的标识符
  114. 8.9 创建单个类
  115. 8.10 创建含抽象基类的接口
  116. 8.11 编写一个类模板
  117. 8.12 编写一个成员函数模板
  118. 8.13 重载自增和自减运算符
  119. 8.14 为直观类行为重载算术和赋值操作符
  120. 8.15 调用一个超类虚函数
  121. 第9章 异常与安全性
  122. 9.0 概述
  123. 9.1 创建一个异常类
  124. 9.2 创建一个异常安全的构造函数
  125. 9.3 创建一个异常安全的初始化列表
  126. 9.4 创建异常安全的成员函数
  127. 9.5 安全地复制一个对象
  128. 第10章 数据流与文件
  129. 10.0 概述
  130. 10.1 文本输出对齐
  131. 10.2 格式化浮点数输出
  132. 10.3 编写自己的流操作程序
  133. 10.4 使类可写入流
  134. 10.5 使流可读取类
  135. 10.6 获取文件信息
  136. 10.7 文件复制
  137. 10.8 删除或重命名文件
  138. 10.9 创建一个临时文件名和文件
  139. 10.10 创建目录
  140. 10.11 删除目录
  141. 10.12 读取目录的内容
  142. 10.13 从字符串中提取文件扩展名
  143. 10.14 从完整路径中提取文件名
  144. 10.15 从完整路径和文件名中提取路径
  145. 10.16 替换文件扩展名
  146. 10.17 将两个路径组合成一个路径
  147. 第11章 科学与数学计算
  148. 11.0 概述
  149. 11.1 计算一个容器中元素的个数
  150. 11.2 查找最大或最小值
  151. 11.3 计算总和与平均值
  152. 11.4 过滤掉给定范围之外的值
  153. 11.5 方差、标准差及其他统计函数计算
  154. 11.6 生成随机数
  155. 11.7 使用随机数初始化容器
  156. 11.8 表示一个数目可变的数字矢量
  157. 11.9 表示一个数目固定的数字矢量
  158. 11.10 点积计算
  159. 11.11 计算矢量的范数
  160. 11.12 计算两个矢量之间的距离
  161. 11.13 实现一个跨步迭代器
  162. 11.14 实现一个大小可变的矩阵
  163. 11.15 实现一个大小固定的矩阵
  164. 11.16 矩阵相乘
  165. 11.17 计算快速傅里叶转换
  166. 11.18 使用极坐标
  167. 11.19 在位集上进行算术运算
  168. 11.20 表示固定宽度的大整数
  169. 11.21 实现固定小数位的数值
  170. 第12章 多线程
  171. 12.0 概述
  172. 12.1 创建一个线程
  173. 12.2 使资源是线程安全的
  174. 12.3 从一个线程中给另一个线程发送通知
  175. 12.4 只初始化一次共享资源
  176. 12.5 给线程函数传递一个参数
  177. 第13章 国际化问题
  178. 13.0 概述
  179. 13.1 硬编码Unicode字符串
  180. 13.2 读取数字
  181. 13.3 读取日期和时间
  182. 13.4 读取货币值
  183. 13.5 给本地化字符串排序
  184. 第14章 XML
  185. 14.0 概述
  186. 14.1 解析一个简单的XML文档
  187. 14.2 使用Xerces字符串
  188. 14.3 解析一个复杂的XML文档
  189. 14.4 XML文档操作
  190. 14.5 使用DTD验证一个XML文档
  191. 14.6 使用Schema验证一个XML文档
  192. 14.7 使用XSLT转换一个XML文档
  193. 14.8 评估一个XPath表达式
  194. 14.9 使用XML保存和还原对象集
  195. 第15章 杂项
  196. 15.0 概述
  197. 15.1 为回调使用函数指针
  198. 15.2 使用指向类成员的指针
  199. 15.3 确保函数不会修改参数
  200. 15.4 确保成员函数不会修改其对象
  201. 15.5 编写一个不是成员函数的操作符
  202. 15.6 初始化由逗号分隔开的数列
书名:C++ Cookbook中文版
译者:金名, 周成兴 等 译
国内出版社:清华大学出版社
出版时间:2007年09月
页数:482
书号:978-7-302-15555-3
原版书出版商:O'Reilly Media
D. Ryan Stephens
 
D. Ryan Stephens软件工程师和作者,居住在Arizona的Tempe。他乐于进行各种语言,尤其是C++语言的程序设计。他的研究兴趣包括信息检索与数据挖掘,以及有关算法和大型数据集的研究。当他不工作、不写作或编程时,喜欢和他的儿女们戏玩,在他的房子周围劳作,或骑自行车出去游玩。
 
 
Christopher Diggins
 
Christopher Diggins自由的软件开发人员和作者,当他还是孩子的时候,就开始进行计算机程序设计。Christopher定期为C++ Users Journal写作,是Heron程序设计语言的设计者。
 
 
Jonathan Turkanis
 
Jonathan Turkanis是Boost Iostreams库和其他几个开源C++库的作者,研究领域包括智能指针、运行时映像、组件体系结构和面向方面程序设计。他是美国加利福尼亚伯克利大学的博士生。
 
 
Jeff Cogswell
 
Jeff Cogswell软件工程师,居住在Ohio的Cincinnati。他从C++语言发明后就开始使用它进行程序设计,已编写了两部C++的图书。他也喜欢用其他语言编程,尤其是Python。不工作时,喜欢阅读小说或弹奏吉他。
 
 
封面上的动物是牧羊犬。它的名字表明,这是一种帮助牧羊人放牧的狗,起源于17世纪的苏格兰和英格兰的高原地带。苏格兰高地的绵羊的腿上和脸上有黑色的毛,称为“Colley”绵羊,这个名字从老苏格兰语的“coal”演变而来。现代的牧羊犬比其苏格兰祖先颜色更浅、骨骼更粗壮,于19世纪后期开始在英格兰繁殖。现在,牧羊犬主要成了家庭宠物,但在美国仍用作农场犬。
有两种不同的牧羊犬:毛皮粗糙的用于看护绵羊;毛皮光滑的用于驱赶牲畜去市场。这两种犬都是灵活的、有着流行型体形的狗,有着锐利的嘴和敏锐的眼睛。它们一般为22~26英寸高,50~75磅重。它们的毛通常为白色,另一种颜色是黄白色、褐白色,甚至是炭黑色。