青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

兔子的技術博客

兔子

   :: 首頁 :: 聯系 :: 聚合  :: 管理
  202 Posts :: 0 Stories :: 43 Comments :: 0 Trackbacks

留言簿(10)

最新評論

閱讀排行榜

評論排行榜

Boost--filesystem

頭文件
#include <boost/filesystem.hpp>
所有Boost.Filesystem庫的內容都處于名空間boost::filesystem之內。

認識basic_path類
在Boost.Filesystem庫里basic_path是最重要的類,它以系統無關的方式保存路徑、文件名。象std::basic_string 一樣,針對char和wchar_t,分別特化了path和wpath。

basic_path的構造函數:

basic_path( const string_type & s ); basic_path( const value_type * s ); template <class InputIterator> basic_path(InputIterator s, InputIterator last);輸入參數是一個字符串(或字符迭代器),表示路徑名,可以輸入系統原生路徑名或可移植路徑名
原生路徑名沒啥好說的,比如C:\Windows; D:\abc\ttt.txt等
可移植路徑名的定義和Unix的路徑定義相同,以“/”作為路徑分隔符。

basic_path成員函數:
成員函數 作用 
template <class InputIterator>basic_path& append(InputIterator first, InputIterator last); 將字符串 s 或字符序列 [first,last) 中的路徑元素追加到保存的路徑中。 
basic_path& remove_filename(); 去除路徑中的文件名 
basic_path& replace_extension( const string_type & new_extension = "" ); 替換擴展名 
string_type string() 得到可移植路徑名 
string_type file_string() 得到系統原生文件名 
string_type directory_string() 得到系統原生路徑名 
string_type root_name() const; 得到根名 
string_type root_directory() const; 得到根目錄 
basic_path root_path() const; 得到根路徑:根名+根目錄 
basic_path relative_path() const; 得到相對路徑 
string_type filename() const; 得到文件名 
basic_path parent_path() const; 得到父路徑:根路徑+相對路徑 
string_type stem(const Path & p) const; 得到不帶擴展名的文件名 
string_type extension(const Path & p) const; 得到擴展名 
bool empty() const; path未賦值 
bool is_complete() const; 是否是完整路徑 
bool has_root_path() const;
bool has_root_name() const;
bool has_root_directory() const;
bool has_relative_path() const;
bool has_filename() const;
bool has_branch_path() const; 路經中是否包含指定的項


測試代碼:
#include "boost/filesystem.hpp"   // 包含所有需要的 Boost.Filesystem 聲明 
#include <iostream>               // 使用 std::cout 
namespace fs = boost::filesystem; 
// 宏FSTEST:測試f的成員函數,輸出成員函數名和結果 
#define FSTEST(x) std::cout << #x##": " << f.x << std::endl 
int main() 

fs::path f("\\folder1\\folder2\\folder3\\filename.ext"); 

FSTEST(string()); 
FSTEST(file_string()); 
FSTEST(directory_string()); 
FSTEST(root_name()); 
FSTEST(root_directory()); 
FSTEST(root_path()); 
FSTEST(relative_path()); 
FSTEST(filename()); 
FSTEST(parent_path()); 
FSTEST(stem()); 
FSTEST(extension()); 

FSTEST(replace_extension("new")); 
char buf[]="hello"; 
FSTEST(append(buf, buf+sizeof(buf))); 
FSTEST(remove_filename()); 

return 0; 
}


輸出:
string(): /folder1/folder2/folder3/filename.ext file_string(): \folder1\folder2\folder3\filename.ext directory_string(): \folder1\folder2\folder3\filename.ext root_name(): root_directory(): / root_path(): / relative_path(): folder1/folder2/folder3/filename.ext filename(): filename.ext parent_path(): /folder1/folder2/folder3 stem(): filename extension(): .ext replace_extension("new"): /folder1/folder2/folder3/filename.new append(buf, buf+sizeof(buf)): /folder1/folder2/folder3/filename.new/hello remove_filename(): /folder1/folder2/folder3/filename.new/

常用函數
函數名 作用 
system_complete(path); 返回完整路徑(相對路徑+當前路徑) 
exists(path); 文件是否存在 
is_directory(path);
is_directory(file_status); 是否是路徑 
is_regular_file(path);
is_regular_file(file_status); 是否是普通文件 
is_symlink(path);
is_symlink(file_status); 是否是一個鏈接文件 
file_status status(path); 返回路徑名對應的狀態 
template <class Path> const Path& initial_path(); 得到程序運行時的系統當前路徑 
template <class Path> Path current_path(); 得到系統當前路徑 
template <class Path> void current_path(const Path& p); 改變當前路徑 
template <class Path> space_info space(const Path& p); 得到指定路徑下的空間信息,space_info 有capacity, free 和 available三個成員變量,分別表示容量,剩余空間和可用空間。 
template <class Path> std::time_t last_write_time(const Path& p); 最后修改時間 
template <class Path> void last_write_time(const Path& p, const std::time_t new_time); 修改最后修改時間 
template <class Path> bool create_directory(const Path& dp); 建立路徑 
template <class Path1, class Path2> void create_hard_link(const Path1& to_p, const Path2& from_p);
template <class Path1, class Path2> error_code create_hard_link(const Path1& to_p, 
const Path2& from_p, error_code& ec); 建立硬鏈接 
template <class Path1, class Path2> void create_symlink(const Path1& to_p, const Path2& from_p);
template <class Path1, class Path2> error_code create_symlink(const Path1& to_p, const Path2& from_p, error_code& ec); 建立軟鏈接 
template <class Path> void remove(const Path& p, system::error_code & ec = singular ); 刪除文件 
template <class Path> unsigned long remove_all(const Path& p); 遞歸刪除p中所有內容,返回刪除文件的數量 
template <class Path1, class Path2> void rename(const Path1& from_p, const Path2& to_p); 重命名 
template <class Path1, class Path2> void copy_file(const Path1& from_fp, const Path2& to_fp); 拷貝文件 
template <class Path> Path complete(const Path& p, const Path& base=initial_path<Path>()); 以base以基,p作為相對路徑,返回其完整路徑 
template <class Path> bool create_directories(const Path & p); 建立路徑


路徑迭代器
basic_directory_iterator
構造函數:

explicit basic_directory_iterator(const Path& dp); basic_directory_iterator();basic_directory_iterator 從構造參數得到目錄,每一次調用 operator++,它就查找并得到下一個文件名直到目錄元素的末尾。不帶參數的構造函數 basic_directory_iterator() 總是構造一個 end 迭代器對象,它是唯一一個用于結束條件的合法迭代器。

示例代碼,得到指定目錄下的所有文件名:
void find_file( const fs::path & dir_path ) 

if ( !fs::exists( dir_path ) ) return; 
fs::directory_iterator end_itr; // 缺省構造生成一個結束迭代器 
for ( fs::directory_iterator itr( dir_path ); 
itr != end_itr; 
++itr ) 

if ( fs::is_directory(itr->status()) ) 

find_file( itr->path() ); //遞歸查找 

else 

std::cout << *itr << std::endl; 


}


basic_recursive_directory_iterator
遞歸遍歷目錄的迭代器,它的構造參數與basic_directory_iterator相同,當調用 operator++時,如果當前值是一個目錄,則進入下一級目錄。
它有三個成員函數: 函數名 作用 
int level() const; 得到當前搜索深度 
void pop(); 調用pop()后,下一次遞增就會直接返回上一級目錄 
void no_push(); 調用no_push()后,即便下一個元素是目錄類型也不進入

示例代碼,得到指定目錄下的所有文件名(和上例作用相同):
void find_file2( const fs::path & dir_path ) 

fs::recursive_directory_iterator end_itr; // 缺省構造生成一個結束迭代器 
for ( fs::recursive_directory_iterator itr( dir_path ); 
itr != end_itr; 
++itr ) 

std::cout << itr.level() << *itr << std::endl; 
}


轉自:http://hi.baidu.com/dulamhoo/blog/item/c501e83a48c2bcf4838b1380.html

posted on 2010-12-29 13:42 會飛的兔子 閱讀(1988) 評論(0)  編輯 收藏 引用 所屬分類: C++庫,組件
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美高清一区二区| av成人天堂| 欧美一区二区三区啪啪| 午夜视频在线观看一区二区| 欧美日韩一二区| 日韩视频在线你懂得| 久久久精彩视频| 久久久久亚洲综合| 亚洲欧洲精品一区二区三区| 99国内精品| 亚洲精品女人| 国产欧美日韩在线观看| 欧美极品aⅴ影院| 亚洲高清精品中出| 亚洲大胆人体视频| 老牛嫩草一区二区三区日本| 一本色道久久综合亚洲精品按摩| 麻豆国产精品va在线观看不卡| 一区二区av在线| 欧美涩涩网站| 久久综合一区二区三区| 亚洲欧洲午夜| 亚洲婷婷综合色高清在线| 在线日韩视频| 欧美影院午夜播放| 亚洲婷婷在线| 国产美女精品一区二区三区| 免费看亚洲片| 亚洲欧美日韩精品一区二区| 91久久亚洲| 国产乱码精品一区二区三区五月婷| 欧美成人午夜激情在线| 久久久夜夜夜| 久久精品最新地址| 亚洲每日在线| 国内精品99| 亚洲人体大胆视频| 99国产精品自拍| 欧美日韩国产色综合一二三四 | 欧美激情女人20p| 午夜精品美女自拍福到在线| 亚洲激情啪啪| 蜜臀99久久精品久久久久久软件| 久久免费高清视频| 伊人成年综合电影网| 99re热这里只有精品免费视频| 欧美一区二区在线看| 欧美日韩在线三级| 亚洲精品无人区| 亚洲天堂网在线观看| 日韩一级精品| 国产精品国产三级国产普通话三级| 欧美岛国在线观看| 一本一本a久久| 亚洲图片欧美午夜| 激情综合激情| 狼狼综合久久久久综合网| 亚洲国产裸拍裸体视频在线观看乱了中文 | 亚洲久久成人| 亚洲伦理久久| 亚洲特级片在线| 欧美在线观看网址综合| 国产精品亚洲а∨天堂免在线| 亚洲小说区图片区| 亚洲在线电影| 欧美一区二区播放| 欧美日本亚洲| 久久亚洲视频| 日韩图片一区| 欧美午夜宅男影院在线观看| 欧美一区二区三区男人的天堂| 久久久久**毛片大全| 欧美激情综合色| 欧美亚洲三区| 久久免费国产精品| 亚洲国产乱码最新视频| 亚洲综合精品一区二区| 欧美aaa级| 暖暖成人免费视频| 在线亚洲精品福利网址导航| 亚洲国产精品尤物yw在线观看| 欧美一区二区视频观看视频| 国产精品久久久一区麻豆最新章节| 久久在线精品| 欧美精品一区二| 欧美激情一区二区三区四区| 国产裸体写真av一区二区| 亚洲精选在线| 欧美a一区二区| 久久国产手机看片| 一区二区三区四区五区在线| 一区二区三区四区国产精品| 国产日韩欧美综合| 久久久久久9| 欧美一区二区三区视频| 亚洲国产另类久久久精品极度| 欧美日本免费| 久久激情婷婷| 久久精品国产999大香线蕉| 国产精品久久午夜| 久久经典综合| 久久免费精品视频| 欧美1级日本1级| 国产精品久久久久久户外露出| 久久久久久夜精品精品免费| 欲色影视综合吧| 欧美福利电影网| 久久精品女人天堂| 亚洲精品视频一区二区三区| 欧美成人亚洲| 欧美日本国产精品| 91久久香蕉国产日韩欧美9色| 国产欧美精品日韩精品| 一区二区三区高清不卡| 久久精品国产999大香线蕉| 欧美日韩日本国产亚洲在线| 亚洲免费观看| 欧美精品激情blacked18| 国产精品久久久久久妇女6080 | 亚洲一区二区高清视频| 午夜精品久久| 亚洲少妇自拍| 免费短视频成人日韩| 国产精品多人| 亚洲欧洲精品一区二区| 国产欧美日本一区视频| 一区二区三区精品| 这里只有精品丝袜| 欧美日本亚洲韩国国产| 一区二区精品在线观看| 另类综合日韩欧美亚洲| 亚洲网站视频| 国产欧美精品一区| 一区二区三欧美| 久久婷婷国产综合精品青草| 一本大道久久精品懂色aⅴ | 欧美午夜精品| 亚洲激情一区| 亚洲视频一区在线| 中文在线资源观看视频网站免费不卡| 一区二区三区欧美视频| 久久久一二三| 欧美一区二区三区在线看| 久久免费的精品国产v∧| 亚洲午夜在线视频| 欧美高清视频一区二区| 一区二区三区四区五区视频| 亚洲影视九九影院在线观看| 欧美日韩在线视频观看| 亚洲网站啪啪| 欧美激情国产日韩| 亚洲一区在线观看视频| 国产亚洲福利| 另类图片综合电影| 亚洲人成人99网站| 在线欧美不卡| 国产午夜精品视频| 久久精品99国产精品酒店日本| 亚洲日韩成人| 国产精品一区二区你懂得| 亚洲国产老妈| 欧美成人久久| 久热精品视频| 国产亚洲激情在线| 99国产精品99久久久久久| 欧美激情五月| 久久嫩草精品久久久精品| 久久亚洲一区| 免费一级欧美片在线播放| 国产精品青草久久久久福利99| 亚洲肉体裸体xxxx137| 欧美精品一区二| 欧美在线free| 亚洲午夜久久久久久久久电影院| 久久爱www久久做| 免费成年人欧美视频| 久久精品一区二区国产| 最新国产精品拍自在线播放| 免费观看久久久4p| 午夜精品久久久久影视| 欧美日在线观看| 欧美另类极品videosbest最新版本| 欧美性猛交99久久久久99按摩| 国产一区二区三区免费不卡| 欧美成人激情视频| 国产精品毛片a∨一区二区三区|国| 亚洲一区二区三区精品在线| 亚洲高清不卡| 欧美理论电影在线播放| 亚洲国产日韩精品| 一区二区三区不卡视频在线观看| 欧美日韩a区| 亚洲午夜视频在线观看| 欧美一区二区在线| 久久成人18免费观看| 亚洲国产精品成人一区二区| 欧美高清在线播放| 一区二区在线视频播放| 亚洲理伦在线| 亚洲国产高清aⅴ视频|