boost/filesystem 涉及到两个头文件
<boost/filesystem.hpp>
主要用到的,主要介绍的是这个<boost/filesystem/fstream.hpp>
和<fstream>接口类似,不同的是和路径有关的参数从string
/const char*
变成了path
这里是最简单的说明,抛弃了模版的形式,使用最常见的调用
class path
boost::filesystem::path
构造函数和赋值函数
模板,会把数据转为内部形式,但不会进行化简("foo/.//../bar" not change)
path::path(const string/path& source);
path::path(InputIterator begin, InputIterator end);
path& path::operator=(const string/path& source);
path& path::operator=(InputIterator begin, InputIterator end);
join函数
模板,可以正确处理分割("hello"/"world" -> "hello/world")
path& path::operator/=(const string/path& source);
path operator/ (const path& lhs, const path& rhs);
path& path::append(const string/path& source);
path& path::append(InputIterator begin, InputIterator end);
concat函数
模板,单纯相连,不处理分割("hello"+"world" -> "helloworld", "hello/"+"/world" -> "hello//world")
path& path::operator+=(const string/path& source);
path& path::concat(const string/path& source);
path& path::concat(InputIterator begin, InputIterator end);
获取path内容
// eg. //root/path/file
path path::root_name() const; // //root
bool path::has_root_name() const;
path path::root_directory() const // /
bool path::has_root_directory() const;
path path::root_path() const; // //root/ <= join(//root, /)
bool has_root_path() const;
path path::relative_path() const; // path/file
bool path::has_relative_path() const;
path path::parent_path() const; // //root/path (dir/ -> dir)
bool path::has_parent_path() const;
path path::filename() const; // file (. -> ., / -> .)
bool path::has_filename() const;
path path::stem() const; // stem.extension == filename
bool path::has_stem() const;
path path::extension() const; // stem.extension == filename
bool path::has_extension() const;
bool is_absolute() const; // root_path
bool is_relative() const;
修改path内容
void path::clear();
void path::swap(path& rhs);
void swap(path& lhs, path& rhs);
path& path::make_preferred();
// WIN: path/file -> path\file
path& path::remove_filename();
// path/dir/ -> path/dir, path/file -> path
path& path::replace_extension(const string/path& new_extension="");
// /dir/file.replace_extension(".abc") -> /dir/file.abc
按成分分析path(boost 1.60)
path path::lexically_normal() const;
path lexically_normal(const path&);
// foo/../bar -> bar
path path::lexically_relative(const path& base) const;
path lexically_relative(const path& p, const path& base);
// a/d, a/b/c -> ../../d
返回path内容
// 原样返回
const string& path::native() const;
const char* path::c_str() const;
size_t path::size() const; // in 1.60
bool path::empty() const;
string path::string() const;
wstring path::wstring() const;
u16string path::u16string() const; // in 1.60
u32string path::u32string() const; // in 1.60
// generic,同原样返回
string path::generic_string() const;
wstring path::generic_wstring() const;
u16string path::generic_u16string() const;
u32string path::generic_u32string() const;
比较path内容
// 原样比较,单纯文本比较
int path::compare(const string/path&) const;
// -1 mean self < other, 0 mean equal, 1 mean >
bool operator< (const path& lhs, const path& rhs);
bool operator<=(const path& lhs, const path& rhs);
bool operator> (const path& lhs, const path& rhs);
bool operator>=(const path& lhs, const path& rhs);
bool operator==(const path& lhs, const path& rhs);
bool operator!=(const path& lhs, const path& rhs);
迭代
iterator path::begin() const;
iterator path::end() const;
reverse_iterator path::rbegin() const;
reverse_iterator path::rend() const;
class file_status
boost::filesystem::file_status
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。