Boost库学习1 -上手与应用

Boost库简介

  • Boost是一个功能强大、构造精巧、跨平台、开源并且完全免费的C++程序库,由Boost社区组织开发、维护;
  • 内容涵盖字符串处理、正则表达式、容器与数据结构、并发编程、函数式编程、泛型编程、设计模式实现等许多领域,可以与C++标准库完美共同工作,并且为其提供扩展功能;
  • C++标准库内容可能是来自boost库,boost库成为具有实践意义的准标准库;
  • 大部分boost库功能的使用只需包括相应头文件即可,少数(如正则表达式库,文件系统库等)需要链接库;

安装与编译

boost下载

1、 在boost官网下载boost压缩文件
在这里插入图片描述
2、解压

boost:源码目录,大部分程序库源码都在这里
doc:HTMI 格式的文档 ,也可以生成 PDF 格式的文档
libs:所有组件的示例,测试、编译代码和说明文档
more:库作者的相关文档
status:可用于测试 Boost 库的各个组件
tools:用于编译boost的工具的源代码等
boostrap.bat/boostrap.sh:编译工具

在这里插入图片描述

注意

  • Boost库把C++类的声明和实现放在了一个文件中,而不是分成两个文件.h和.cpp,故文件的后缀是.hpp;
  • 包含头文件的时候需要有boost目录,即#include “boost/logic/tribool.hpp”,而不是#include “logic/tribool.hpp”;
    在这里插入图片描述

编译

windows环境

  • windows下执行boostrap.bat,会生成b2.exe及project-config.jam文件;
    在这里插入图片描述
    在这里插入图片描述

  • 然后执行b2.exe会在stage\lib下生成x64、x86平台的release及debug版本的静态库(编译动态库需要添加参数:b2.exe link=shared),其中带gd的是debug版本,不带gd的是release版本;

  • 在这里插入图片描述
    在这里插入图片描述

linux 环境

1、执行 ./boostrap.sh 进行boost配置,生成b2;
2、进行编译
	简单编译: 执行 sudo ./b2 install
	完全编译: 执行 sudo ./b2 --buildtype=completed install

开发环境配置与实例

  • 开发工具 visual studio 2013

头文件包含

  • 使用绝对路径
#include "D:/Downloads/boost_1_80_0/boost/algorithm/string.hpp"
  • 使用相对路径(推荐),在项目属性中添加附加包含目录,然后代码里添加
#include "boost/algorithm/string.hpp"

在这里插入图片描述

字符串实例

// boost string库引用

#include <iostream>
#include "boost/algorithm/string.hpp"

int main()
{
	// 字符串大小写转换
	std::string str = "abc";
	boost::to_upper(str);  // 改变了原字符串
	std::cout << "str=" << str << std::endl;

	std::string strCpy = boost::to_lower_copy(str);  // 不改变了原字符串
	std::cout << "str=" << str << ", strCpy=" << strCpy << std::endl;

	getchar();
	return 0;
}

在这里插入图片描述

链接静态库

  • 由于添加的头文件是接口声明文件,具体实现的cpp代码可能被编译成了lib文件,这时需要把lib引用到项目中;
  • 代码中引用,但这样可能会有问题,因为这个lib可能引用了其他lib,也需要引用进来;
#pragma comment(lib, "D:/Downloads/boost_1_80_0/stage/lib/libboost_date_time-vc142-mt-gd-x32-1_80.lib")
  • 项目属性中添加库路径以及库名称(推荐)
    在这里插入图片描述
    在这里插入图片描述

时间实例

// date_time库引用

#include <iostream>
#include "boost/date_time/gregorian/gregorian.hpp"

int main()
{
	boost::gregorian::date today = boost::gregorian::day_clock::local_day();

	std::cout << "今天是" << today.year() << "年" << std::endl; 
	std::cout << today.month().as_number() << "月" << std::endl;
	std::cout << today.day() << "日" << std::endl;
	std::cout << "星期" << today.day_of_week() << std::endl;
	std::cout << "一年中的第几周: " << today.week_number() << std::endl;
	std::cout << "一年中的第多少天: " << today.day_of_year() << std::endl;

	getchar();
	return 0;
}

在这里插入图片描述

链接动态库

  • 将.dll文件放到exe所在的目录即可

知识总结,交流学习,不当之处敬请指正,谢谢!

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值