boost/filesystem 涉及到两个头文件c++
<boost/filesystem.hpp>
主要用到的,主要介绍的是这个app
<boost/filesystem/fstream.hpp>
和<fstream>接口相似,不一样的是和路径有关的参数从string
/const char*
变成了path
函数
这里是最简单的说明,抛弃了模版的形式,使用最多见的调用code
boost::filesystem::path
构造函数和赋值函数
模板,会把数据转为内部形式,但不会进行化简("foo/.//../bar" not change)orm
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")rem
path& path::operator+=(const string/path& source); path& path::concat(const string/path& source); path& path::concat(InputIterator begin, InputIterator end);
获取path内容string
// 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内容it
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)io
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;
boost::filesystem::file_status