C++中使用boost操作文件目录系统

C++中使用boost操作文件目录系统

前言

目录、文件处理是脚本语言如shell、python所擅长的领域,在C++17之前,C++语言缺乏对操作系统文件的查询和操作能力。

boost库的filesystem是一个可移植的文件系统操作符,已被收入C++17版本。它在底层做了大量的工作,使用了POSIX标准表示文件系统的路径,接口很类似标准库的容器和迭代器。使C++具有了类似脚本语言的功能,可以跨平台操作目录、文件,写出通用的脚本程序

filesystem库需要system库支持(-lboost_system -lboost_filesystem),位于名字空间boost::filesystem,需要包含头文件<boost/filesystem.hpp>

filesystem使用介绍

filesystem库的核心类是path,它屏蔽了不同文件系统的差异,使用可移植的POSIX语法提供了通用的目录、路径表示。
path的构造函数没有被声明为explicit,因此字符串可以被隐式转换为path对象,这在编写操作文件系统的代码时非常方便,可以不用创建一个临时的path对象。filesystem的成员属性较多,这里只介绍常用到的几个。
初始化一个path 对象,可以如下使用:

 boost::filesystem::path path1("./Demo/Demo.txt"); //Linux下

或者

boost::filesystem::path path2("C:\\Boost\\Demo\\include\\");//Windows下

判断路径是否存在,不存在则创建,可以如下使用:

if(!boost::filesystem::exists(folderPath))
{
	boost::filesystem::create_directories(folderPath); 
}

判断路径是否是绝对路径

path1.is_absolute

判断路径是否是相对路径

path1.is_relative

判断路径是否为空

boost::filesystem::is_empty(path1)

判断路径是否为目录

boost::filesystem::is_directory(path1)

获取文件路径的上层级路径

path1.branch_path

获取文件路径的主干部分

path1.stem

获取文件名

path1.filename

获取文件路径的扩展名

path1.extention

使用示例如下

#include <iostream>
#include <boost/filesystem.hpp>
namespace fs = boost::filesystem;
using namespace std;
int main()
{
	boost::filesystem::path path("./Datas/test/");
	boost::filesystem::path path1("./Datas/test/test.png"); 
	
	if (!fs::exists(path))
	{
		fs::create_directories(path);
	}
	cout<<path1.is_absolute()<<endl;
		
	cout<<path1.is_relative()<<endl;
		
	cout << fs::is_empty(path) << endl;
	
	cout <<fs::is_directory(path) << endl;
	cout << fs::is_directory(path1) << endl;
		
	cout << path1.branch_path() << endl;
		
	cout << path1.stem() << endl;
		
	cout << path1.filename() << endl;
	cout << path1.extension() << endl;
	system("pause");
}

输出结果如下

在这里插入图片描述

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: C++ Boost库是一个广泛使用的开源库集合,为C++提供了许多功能强大的工具和算法。在Boost,有一个名为C++11 Boost库的子模块,它专门为支持C++11标准而设计。 C++11标准引入了许多新的语言特性和库组件,以提高编程效率和代码可靠性。而C++11 Boost库则扩展了标准库,为开发者提供了更多的功能和工具。 C++11 Boost库的文手册是为了方便国程序员使用该库而编写的文档。该手册详细介绍了C++11 Boost各个模块的功能、用法和示例代码。通过阅读文手册,程序员可以更清晰地了解每个模块的用途,以及如何正确地使用它们。 在C++11 Boost,有许多常用的模块,比如smart_ptr模块,提供了智能指针的功能,用于管理动态内存;thread模块,用于创建和管理线程;filesystem模块,提供了对文件和目录的操作等。在文手册,为每个模块都提供了详细的说明和示例,帮助开发者快速上手和运用。 总之,C++11 Boost文手册为国的程序员提供了方便和便捷的学习和使用Boost库的途径。通过阅读手册,开发者可以更加深入地了解每个模块的使用方法,从而更高效地开发和调试他们的C++程序。 ### 回答2: Boost库是一个C++的开源库集合,提供了丰富的功能和工具,可以帮助开发者更加高效地进行C++编程。Boost文手册是对Boost库的相关文档进行文翻译的版本。 Boost库包含了众多的模块和组件,如智能指针、函数对象、线程、正则表达式、文件系统等,覆盖了C++开发常用的领域。通过使用Boost库,开发者可以在项目集成各种功能强大、稳定可靠的组件,提高代码的复用性和可维护性。 Boost文手册对于理解和学习Boost库的使用非常有帮助。手册提供了详细的说明和示例代码,对于各个组件的功能、用法和特性进行了清晰的介绍,使得开发者可以快速上手和了解各个组件的使用细节。 通过学习Boost文手册,开发者可以深入了解各个模块和组件的详细功能和使用方法,使得他们能够更加灵活地利用Boost库来解决实际的开发问题。同时,手册也提供了相应的参考资料和链接,方便开发者进一步扩展他们的学习和实践。 总之,Boost文手册是一个非常宝贵的资源,可以帮助开发者更好地利用Boost库进行C++编程。通过掌握Boost库提供的丰富功能和工具,开发者可以在项目提高代码的效率和质量,同时也能够更好地满足对于C++编程的需求。 ### 回答3: Boost是一个开源的C++库,提供了很多功能丰富的组件,可以帮助开发者更轻松地进行C++程序开发Boost包含了很多不同的模块,涵盖了各种不同的领域和功能。 11-boost文手册是指Boost库的第11章,该章节主要介绍了一些与字符串处理相关的功能组件。在这个章节,我们可以了解到Boost库提供了一些强大的字符串处理工具,可以用于字符串的分割、合并、格式化、替换等操作。 例如,Boost的split函数可以帮助我们将一个字符串按照指定的分隔符进行分割,并将分割后的子字符串存入一个容器。另外,Boost库还提供了format函数,用于格式化字符串,能够方便地将变量插入到字符串。 此外,Boost库还提供了一些用于字符串匹配和替换的函数,例如regex_match和regex_replace等。这些函数可以帮助开发者高效地进行字符串模式匹配和替换。 总之,11-boost文手册是关于Boost字符串处理的部分。通过使用Boost提供的强大函数和组件,开发者可以更加方便地进行字符串处理和操作

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shanhedian2013

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值