欢迎来到天天文库
浏览记录
ID:19790953
大小:68.00 KB
页数:6页
时间:2018-10-06
《了解 boost filesystem library》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、了解BoostFilesystemLibrary C++语言(实际上是C++标准)的最常见问题之一是,缺乏定义良好的库来帮助处理文件系统查询和操作。由于这个原因,程序员不得不使用本机操作系统提供的应用程序编程接口(ApplicationProgramInterfaces,API),而这使得代码不能在平台之间移植。以下面的简单情况为例:您需要确定某个文件是否是Directory类型。在Microsoft®E变量。这两种方法在实际中各有优缺点。考虑以下情况:您希望操作软件所创建的目录,此目录在UNIX和Linux系统上位于/tmp/mypmy::pathpath(
2、/tmp/my::pathpath(C: mpmy::pathpath(/tmp/mye_check指的是一个名称检查函数原型。如果其参数输入PATHNAME对于特定的操作系统或文1234下一页——感谢阅读这篇文章,..,件系统有效,名称检查函数将返回True。BoostFilesystemLibrary提供了多个名称检查函数,而且也欢迎您提供自己的变体。常用的名称检查函数是Boost提供的portable_posix_name和e。 path成员函数概述 path对象提供了多个成员方法。这些成员例程并不会修改文件系统,但会根据path名称提供有用的信息。此部分提
3、供了其中几个例程的概述: conststd::stringstring():此例程会返回用于初始化path的字符串的副本,其格式符合path语法规则。 std::stringroot_directory():在提供了路径的情况下,此API将返回根目录,否则将返回空字符串。例如,如果路径包含/tmp/var1,则此例程将返回/,即UNIX文件系统的根。不过,如果路径是相对路径,如../mye():在给定从文件系统根目录开始的路径的情况下,此例程将返回包含PATHNAME的第一个字符的字符串。 std::stringleaf():在给定绝对路径名称(例如,/home/
4、user1/file2)的情况下,此例程将提供与文件名称对应的字符串(即file2)。 std::stringbranch_path():这是与leaf互补的例程。在给定路径的情况下,将会返回其构造所用的所有元素(除了最后一个元素)。例如,对于使用/a/b/c初始化的path,path.branch_path()将返回/a/b。对于包含单个元素的路径,如c,此例程将返回空字符串。 boolempty():如果path对象包含空字符串(例如pathpath1()),则此例程将返回True。 boost::filesystem::path::iterator:此例程用
5、于遍历path的各个元素。请看清单5所示的代码。 清单5.使用path::iterator(begin和end接口)#include<iostream>#includeboost/filesystem.hppintmain() { boost::filesystem::pathpath1(/usr/local/include);//randompathname boost::filesystem::path::iteratorpathI=path1.begin(); p;rhs):此例程是path的非成员函数。它将返回使用lhs和rhs形成的路径的串联值。
6、它将自动插入/作为路径分隔符,如清单6中所示。 清单6.路径字符串的串联#include<iostream>#includeboost/filesystem.hppintmain() { boost::filesystem::pathpath1(/usr/local/include);//randompathname boost::filesystem::path::iteratorpathI=path1.begin(); Library将使用C++异常报告运行时错误。boost::filesystem_error类派生自std::runtime_erro
7、r类。库中的函数使用filesystem_error异常报告操作错误。与不同的可能错误类型对应,Boost头文件定义了相应的错误代码。用户代码通常驻留在try...catch块内,使用filesystem_error异常来报告相关错误消息。清单7提供了重命名文件的小示例,在from路径中的文件不存在时引发异常。 清单7.Boost中的错误处理#include<iostream>#includeboost/filesystem.hppintmain() { try{ boost::filesystem::pathpath(C:
此文档下载收益归作者所有