Skip to content

Latest commit

 

History

History
149 lines (87 loc) · 10.5 KB

File metadata and controls

149 lines (87 loc) · 10.5 KB

零、前言

如果你想利用 Boost 和 C++ 的真正力量,避免在什么情况下使用哪个库的困惑,那么这本书就是为你准备的。 从 Boost C++ 的基础知识开始,您将继续学习 Boost 库如何简化应用开发。您将学习转换数据,例如字符串到数字、数字到字符串、数字到数字等等。管理资源将成为小菜一碟。您将看到在编译时可以做什么样的工作,以及 Boost 容器可以做什么。您将学到开发高质量、快速和可移植应用的所有知识。写一次程序,然后就可以在 Linux、Windows、macOS、安卓操作系统上使用了。从操作图像到图表、目录、计时器、文件和网络,每个人都会发现一个有趣的话题。 注意,本书的知识不会过时,因为越来越多的 Boost 库成为 C++ 标准的一部分。

这本书涵盖了什么

第 1 章开始写你的应用,告诉你日常使用的图书馆。我们将看到如何从不同的来源获得配置选项,以及使用 Boost 库作者引入的一些数据类型可以实现什么。

第 2 章管理资源,处理由 Boost 库引入的数据类型,主要集中在处理指针上。我们将看到如何轻松管理资源,以及如何使用能够存储任何函数对象、函数和 lambda 表达式的数据类型。读完这一章,你的代码将变得更加可靠,内存泄漏将成为历史。

第 3 章转换和转换,描述了如何将字符串、数字和用户定义的类型相互转换,如何安全地转换多态类型,以及如何在 C++ 源文件内部编写大小解析器。涵盖了日常使用和极少数情况下的多种数据转换方式。

第 4 章编译时技巧描述了 Boost 库的一些基本示例,这些示例可用于优化算法的编译时检查以及其他元编程任务。没有它,理解 Boost 源和其他类似 Boost 的库是不可能的。

第 5 章多线程,重点介绍多线程编程的基础知识以及与之相关的所有东西。

第 6 章 *【操纵任务】*显示了将功能对象称为任务。这一章的主要思想是,我们可以将所有的处理、计算和交互分成函子(任务),并且几乎独立地处理这些任务中的每一个。此外,我们可能不会阻止一些缓慢的操作(例如从套接字接收数据或等待超时),而是提供一个回调任务并继续处理其他任务。一旦操作系统完成慢速操作,我们的回调将被执行。

第七章操纵琴弦,展示了改变、搜索和表现琴弦的不同方面。我们将看到如何使用 Boost 库轻松完成一些常见的字符串相关任务。它处理非常常见的字符串操作任务。

第八章元编程,介绍了一些很酷很难理解的元编程方法。在本章中,我们将更深入地了解如何将多个类型打包成一个类似元组的类型。我们将创建操作类型集合的函数,我们将看到编译时集合的类型如何改变,以及编译时技巧如何与运行时混合。

第九章集装箱,讲的是助推集装箱以及与之直接相连的东西。本章提供了关于可以在日常编程中使用的 Boost 类的信息,这将使您的代码更快,新应用的开发更容易。

第 10 章收集平台和编译器信息,描述了用于检测编译器、平台和 boost 特性的不同帮助宏——这些宏在 Boost 库中广泛使用,对于编写能够处理任何编译器标志的可移植代码至关重要。

第 11 章使用系统,详细介绍了文件系统以及如何创建和删除文件。我们将看到数据如何在不同的系统进程之间传递,如何以最大速度读取文件,以及如何执行其他技巧。

第 12 章摸着冰山一角,专门介绍一些大图书馆,给大家一些基础知识作为开始。

这本书你需要什么

你需要一个现代的 C++ 编译器,Boost 库(任何版本都可以,推荐 1.65 或者更新的版本),和 QtCreator/qmake,或者直接导航到http://apolukhin.GitHub.io/Boost-Cookbook/在线运行和实验例子。

这本书是给谁的

这本书是为那些希望提高 Boost 知识,并希望简化应用开发过程的开发人员准备的。假设具有标准库的 C++ 知识和基础知识。

部分

在这本书里,你会发现几个经常出现的标题(准备,怎么做...,它是如何工作的...,还有更多...,另请参阅)。为了给出如何完成配方的明确说明,我们使用以下部分:

准备好

本节告诉您配方中的预期内容,并描述如何设置配方所需的任何软件或任何初步设置。

怎么做…

本节包含遵循配方所需的步骤。

它是如何工作的…

这一部分通常包括对前一部分发生的事情的详细解释。

还有更多…

本节包含关于配方的附加信息,以便读者更好地了解配方。

请参见

本节提供了该配方的其他有用信息的有用链接。

约定

在这本书里,你会发现许多区分不同种类信息的文本样式。以下是这些风格的一些例子和对它们的意义的解释。

文本中的码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟网址、用户输入和推特句柄如下所示:

“记住这个库不仅仅是一个头文件,所以你的程序必须链接到libboost_program_options库”。

代码块设置如下:

#include <boost/program_options.hpp> 
#include <iostream>
namespace opt = boost::program_options; 
int main(int argc, char *argv[])
{

当我们希望将您的注意力吸引到代码块的特定部分时,相关的行或项目以粗体显示:

#include <boost/program_options.hpp> 
#include <iostream>
namespace opt = boost::program_options; 
int main(int argc, char *argv[])

任何命令行输入或输出都编写如下:

 $ ./our_program.exe --apples=10 --oranges=20
Fruits count: 30

新名词重要词语以粗体显示。

Warnings or important notes appear in a box like this. Tips and tricks appear like this.

读者反馈

我们随时欢迎读者的反馈。让我们知道你对这本书的看法——你喜欢或不喜欢什么。读者反馈对我们来说很重要,因为它有助于我们开发出你真正能从中获益的标题。要给我们发送一般反馈,只需发送电子邮件feedback@packtpub.com,并在您的邮件主题中提及书名。如果您对某个主题有专业知识,并且对写作或投稿感兴趣,请参见我们位于www.packtpub.com/authors的作者指南。

客户支持

现在,您已经自豪地拥有了一本书,我们有许多东西可以帮助您从购买中获得最大收益。

下载示例代码

你可以从你在http://www.packtpub.com的账户下载这本书的示例代码文件。如果您在其他地方购买了这本书,您可以访问http://www.packtpub.com/support并注册,以便将文件直接通过电子邮件发送给您。您可以按照以下步骤下载代码文件:

  1. 使用您的电子邮件地址和密码登录或注册我们的网站。
  2. 将鼠标指针悬停在顶部的“支持”选项卡上。
  3. 点击代码下载和勘误表。
  4. 在搜索框中输入图书的名称。
  5. 选择要下载代码文件的书籍。
  6. 从您购买这本书的下拉菜单中选择。
  7. 点击代码下载。

下载文件后,请确保使用最新版本的解压缩文件夹:

  • 视窗系统的 WinRAR / 7-Zip
  • zipeg/izp/un ARX for MAC
  • 适用于 Linux 的 7-Zip / PeaZip

这本书的代码包也托管在 GitHub 上https://GitHub . com/packt publishing/Boost-Cpp-Application-Development-cook book-第二版。我们还有来自丰富的图书和视频目录的其他代码包,可在https://github.com/PacktPublishing/获得。看看他们!

本烹饪书中给出的示例的源代码文件也托管在作者的 GitHub 存储库中。您可以在https://GitHub.com/apolukhin/Boost-Cookbook访问作者的存储库,获取最新版本的代码。

正误表

尽管我们尽了最大努力来确保我们内容的准确性,但错误还是会发生。如果你在我们的某本书里发现了错误——可能是文本或代码中的错误——如果你能向我们报告,我们将不胜感激。通过这样做,你可以让其他读者免受挫折,并帮助我们改进这本书的后续版本。如果您发现任何勘误表,请访问http://www.packtpub.com/submit-errata,选择您的书籍,点击勘误表提交表格链接,并输入您的勘误表的详细信息。一旦您的勘误表得到验证,您的提交将被接受,勘误表将上传到我们的网站或添加到该标题勘误表部分下的任何现有勘误表列表中。

要查看之前提交的勘误表,请前往https://www.packtpub.com/books/content/support并在搜索栏中输入图书名称。所需信息将出现在勘误表部分。

海盗行为

在互联网上盗版受版权保护的材料是一个贯穿所有媒体的持续问题。在 Packt,我们非常重视版权和许可证的保护。如果您在互联网上遇到任何形式的我们作品的非法拷贝,请立即向我们提供位置地址或网站名称,以便我们寻求补救。

请通过copyright@packtpub.com联系我们,获取疑似盗版资料的链接。

我们感谢您在保护我们的作者方面的帮助,以及我们为您带来有价值内容的能力。

问题

如果您对本书的任何方面有问题,可以在questions@packtpub.com联系我们,我们将尽最大努力解决问题。