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

兔子的技術(shù)博客

兔子

   :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
  202 Posts :: 0 Stories :: 43 Comments :: 0 Trackbacks

留言簿(10)

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

Boost--filesystem

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

認(rèn)識(shí)basic_path類
在Boost.Filesystem庫(kù)里basic_path是最重要的類,它以系統(tǒng)無(wú)關(guān)的方式保存路徑、文件名。象std::basic_string 一樣,針對(duì)char和wchar_t,分別特化了path和wpath。

basic_path的構(gòu)造函數(shù):

basic_path( const string_type & s ); basic_path( const value_type * s ); template <class InputIterator> basic_path(InputIterator s, InputIterator last);輸入?yún)?shù)是一個(gè)字符串(或字符迭代器),表示路徑名,可以輸入系統(tǒng)原生路徑名或可移植路徑名
原生路徑名沒(méi)啥好說(shuō)的,比如C:\Windows; D:\abc\ttt.txt等
可移植路徑名的定義和Unix的路徑定義相同,以“/”作為路徑分隔符。

basic_path成員函數(shù):
成員函數(shù) 作用 
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 = "" ); 替換擴(kuò)展名 
string_type string() 得到可移植路徑名 
string_type file_string() 得到系統(tǒng)原生文件名 
string_type directory_string() 得到系統(tǒng)原生路徑名 
string_type root_name() const; 得到根名 
string_type root_directory() const; 得到根目錄 
basic_path root_path() const; 得到根路徑:根名+根目錄 
basic_path relative_path() const; 得到相對(duì)路徑 
string_type filename() const; 得到文件名 
basic_path parent_path() const; 得到父路徑:根路徑+相對(duì)路徑 
string_type stem(const Path & p) const; 得到不帶擴(kuò)展名的文件名 
string_type extension(const Path & p) const; 得到擴(kuò)展名 
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; 路經(jīng)中是否包含指定的項(xiàng)


測(cè)試代碼:
#include "boost/filesystem.hpp"   // 包含所有需要的 Boost.Filesystem 聲明 
#include <iostream>               // 使用 std::cout 
namespace fs = boost::filesystem; 
// 宏FSTEST:測(cè)試f的成員函數(shù),輸出成員函數(shù)名和結(jié)果 
#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/

常用函數(shù)
函數(shù)名 作用 
system_complete(path); 返回完整路徑(相對(duì)路徑+當(dāng)前路徑) 
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); 是否是一個(gè)鏈接文件 
file_status status(path); 返回路徑名對(duì)應(yīng)的狀態(tài) 
template <class Path> const Path& initial_path(); 得到程序運(yùn)行時(shí)的系統(tǒng)當(dāng)前路徑 
template <class Path> Path current_path(); 得到系統(tǒng)當(dāng)前路徑 
template <class Path> void current_path(const Path& p); 改變當(dāng)前路徑 
template <class Path> space_info space(const Path& p); 得到指定路徑下的空間信息,space_info 有capacity, free 和 available三個(gè)成員變量,分別表示容量,剩余空間和可用空間。 
template <class Path> std::time_t last_write_time(const Path& p); 最后修改時(shí)間 
template <class Path> void last_write_time(const Path& p, const std::time_t new_time); 修改最后修改時(shí)間 
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中所有內(nèi)容,返回刪除文件的數(shù)量 
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作為相對(duì)路徑,返回其完整路徑 
template <class Path> bool create_directories(const Path & p); 建立路徑


路徑迭代器
basic_directory_iterator
構(gòu)造函數(shù):

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

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

if ( !fs::exists( dir_path ) ) return; 
fs::directory_iterator end_itr; // 缺省構(gòu)造生成一個(gè)結(jié)束迭代器 
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
遞歸遍歷目錄的迭代器,它的構(gòu)造參數(shù)與basic_directory_iterator相同,當(dāng)調(diào)用 operator++時(shí),如果當(dāng)前值是一個(gè)目錄,則進(jìn)入下一級(jí)目錄。
它有三個(gè)成員函數(shù): 函數(shù)名 作用 
int level() const; 得到當(dāng)前搜索深度 
void pop(); 調(diào)用pop()后,下一次遞增就會(huì)直接返回上一級(jí)目錄 
void no_push(); 調(diào)用no_push()后,即便下一個(gè)元素是目錄類型也不進(jìn)入

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

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

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


轉(zhuǎn)自:http://hi.baidu.com/dulamhoo/blog/item/c501e83a48c2bcf4838b1380.html

posted on 2010-12-29 13:42 會(huì)飛的兔子 閱讀(1988) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C++庫(kù),組件
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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永久久久| 国产精品日韩久久久久| 另类天堂av| 欧美中文在线免费| 午夜精品一区二区三区在线| 亚洲视频精选| 亚洲在线观看免费视频| 亚洲午夜一区二区三区| 亚洲免费视频中文字幕| 亚洲欧美视频在线观看视频| 亚洲特色特黄| 欧美一区免费视频| 久久一本综合频道| 亚洲大胆av| 91久久国产精品91久久性色| 91久久精品视频| 亚洲在线一区| 欧美在线视频免费观看| 美女国产一区| 欧美日韩中文字幕精品| 国产麻豆午夜三级精品| 亚洲福利视频网站| 亚洲一区二区三区欧美| 久久久久成人精品| 亚洲电影成人| 亚洲女人天堂成人av在线| 久久精彩免费视频| 欧美日韩一区二区三| 国产欧美日韩激情| 亚洲国产日韩欧美在线99 | 久久久精品tv| 欧美精品免费看| 国产欧美一区二区精品性| 精品成人一区二区三区四区| 日韩一区二区精品| 久久亚洲电影| 亚洲欧美日韩另类| 欧美~级网站不卡| 亚洲午夜激情免费视频| 美女999久久久精品视频| 国产欧美不卡| 亚洲一区黄色| 欧美黄色一区| 先锋a资源在线看亚洲| 欧美精品电影| 亚洲国产成人91精品| 欧美一级播放| 99v久久综合狠狠综合久久| 久久蜜桃资源一区二区老牛| 国产精品羞羞答答| 国产精品日韩电影| 99国产精品久久久久久久成人热| 久久久久久久一区| 亚洲视频综合在线| 一区二区三区国产精华| 久久久久成人网| 国产亚洲va综合人人澡精品| 国产精品99久久久久久久女警 | 欧美黄色大片网站| 一区二区三区我不卡| 欧美在线视频网站| 亚洲午夜在线| 国产精品乱码人人做人人爱| 夜夜嗨一区二区| 亚洲精品乱码久久久久久日本蜜臀| 久久久中精品2020中文| 狠狠入ady亚洲精品| 久久精品国产免费观看| 亚洲欧美日韩一区| 国产欧美日韩伦理| 久久久91精品| 久久免费午夜影院| 亚洲国产综合在线| 亚洲激情网址| 欧美日韩在线高清| 亚洲综合第一| 欧美亚洲三区| 黄色工厂这里只有精品| 免费日本视频一区| 欧美va天堂| 99国产一区二区三精品乱码| 亚洲日本va午夜在线电影| 欧美久久99| 亚洲综合导航| 久久久91精品国产| 亚洲精品一区中文| 一区二区三区波多野结衣在线观看| 欧美三区在线视频| 欧美中文字幕精品| 久久这里只有精品视频首页| 亚洲三级电影全部在线观看高清| 亚洲精品在线视频观看| 国产精品欧美久久| 美女黄色成人网| 欧美日本免费| 久久成人精品| 嫩草国产精品入口| 亚洲欧美日韩天堂| 久久久亚洲综合| 亚洲一区二区三区视频播放| 性做久久久久久免费观看欧美 | 午夜精品一区二区三区在线视| 亚洲自拍另类| 亚洲日本视频| 午夜在线观看欧美| 99国产精品视频免费观看| 新片速递亚洲合集欧美合集| 亚洲日本电影| 欧美一区二区免费| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 国产日韩欧美亚洲一区| 欧美大胆a视频| 国产精品豆花视频| 欧美77777| 国产精品一区二区视频| 亚洲国产成人精品久久| 国产麻豆午夜三级精品| 亚洲国产日韩欧美在线99| 国产精品亚洲欧美| 亚洲欧洲美洲综合色网| 国产自产v一区二区三区c| 日韩手机在线导航| 欧美国产丝袜视频| 久久综合影视| 国产毛片一区| 一本色道精品久久一区二区三区| 在线精品在线| 久久国产精彩视频| 久久精品人人做人人爽| 国产精品国产三级欧美二区| 亚洲精品久久久久久下一站 | 国产视频丨精品|在线观看| 日韩网站在线观看| 亚洲免费电影在线| 欧美福利影院| 91久久精品国产91性色tv| 亚洲精品一区在线观看| 美女图片一区二区| 欧美国产精品中文字幕| 亚洲国产精品久久久久婷婷884| 久久精品国产亚洲精品| 久久嫩草精品久久久精品一| 国产一区二区三区在线观看精品 | 亚洲在线一区二区| 西西裸体人体做爰大胆久久久| 欧美午夜精品久久久久免费视| 亚洲美女视频网| 一区二区三区欧美| 欧美三日本三级三级在线播放| 亚洲日韩视频| 在线一区二区日韩| 欧美视频日韩视频| 亚洲人成在线播放网站岛国| av成人国产| 欧美精品久久天天躁| 牛人盗摄一区二区三区视频| 国内自拍亚洲| 欧美精品九九| 亚洲精品一区二区三区樱花| 亚洲精品久久在线| 欧美国产三区| 欧美一区二区免费观在线| 久久精品国产999大香线蕉| 国产精品一区免费视频| 欧美伊人久久久久久久久影院| 欧美午夜精品久久久久久超碰| 一本色道久久综合亚洲精品小说| 一本一本久久a久久精品牛牛影视| 国产精品乱码| 久久国产手机看片| 欧美成人黑人xx视频免费观看| 亚洲国产导航| 在线性视频日韩欧美| 亚洲综合三区| 国产精品综合色区在线观看| 亚洲男人的天堂在线| 裸体丰满少妇做受久久99精品| 伊人一区二区三区久久精品| 久久久国产亚洲精品| 欧美黄色片免费观看| 午夜精品一区二区三区在线播放| 国产日韩成人精品| 久久综合九色综合欧美狠狠| 亚洲国产精品一区二区尤物区| 黄色精品一二区| 9i看片成人免费高清| 欧美日韩在线一二三| 亚洲男人第一av网站| 欧美一区二区啪啪| 日韩午夜av| 国产精品毛片va一区二区三区| 午夜欧美精品| 亚洲国产精品激情在线观看| 午夜精品美女自拍福到在线| 合欧美一区二区三区| 欧美电影免费观看大全| 中文在线一区| 亚洲免费观看高清在线观看| 久久九九国产精品怡红院| 一区二区三区精品久久久|