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