·概述:
boost发展到现在的版本,包含的功能已经很多了。不过本着用到的学些,没用到的了解的学习方法,记录下需要学习的知识点。
·要点:
·noncopyable:
原理就是将复制构造函数和赋值操作符私有化来阻止复制操作。
使用noncopyable的原因:统一使用而节省代码、noncopyable的名字就很好的传达出了不可拷贝的信息。
简单的应用中就可以自己实现的。
·异常系统:
对boost库的异常没有学习,不过看到一个介绍STL中也有异常体系的。std::exception是异常的基类,还有其他定义好的子类异常。还需要学习了解下STL的异常体系啊。
·字符串转换:
C++中强制类型转换还是建议使用static_cast等类型转换方法的。
字符串转换为其他类型的方法是使用atoi()等C库函数的方法。
而从其他类型转换为字符串的话,可以使用流std::stringstream方法。
boost给出的方法是使用lexical_cast来进行转换--从字符串到数字和从数字到字符串。
boost提供的其他的方法还有format格式化字符串,string_algo字符串处理算法和tokenizer(分词器)和xpressive(正则表达式和语法分析器)。
·随机数:
C库提供了随机函数。
而boost提供的接口相似的伪随机数函数需要考虑伪随机数生成器的成本和应用范围。
·配置文件读写:
以前以为boost没有xml等配置文件的读写呢,不过boost还是很全的有property_tree用于读写配置信息,可用的格式有xml,josn,ini等。
·操作系统相关:
与操作系统相关的底层封装有:io_state_savers,system,filesystem和program_options这四个主要库。
库io_state_savers不需要编译,用于记录流状态等信息。
库system主要是封装系统的错误处理的方法--错误代码而不是异常。被filesystem和asio等作为基础组件使用。errc是定义的枚举类型。system库的核心类是error_category(标识错误代码的类别),error_code(偏重底层的错误代码)和error_condition(偏重移植的错误代码)。同时system提供了一个异常类system_error--继承自STL的runtime_error,是对error_code的一个适配。
filesystem用于弥补C++对目录、文件处理。待深入研究。
库program_options是处理命令行,Linux下的头文件getopt.h也是类似功能。
·小结:
boost的版本都到1.4+了,即使收入标准在严格也会包含挺多功能的。只好先找最需要的。
其中property_tree和system和filesystem和program_options都需要在深入研究。