boost 遍历文件夹

     打算仅用c++来实现遍历文件夹,在网上看有很多boost的例子,就拿来参考一下:

http://hi.baidu.com/seekvista/blog/item/e3e5e788a57f4197a4c27280.html

#include  " boost/filesystem/operations.hpp "
#include  " boost/filesystem/path.hpp "
#include  < iostream >
using   namespace  std;
namespace  fs  =  boost::filesystem;
void  PrintAllFile(fs::path  & full_path);
int  main(  int  argc,  char *  argv[] )
{
    fs::path full_path(  " D:// "  ,fs::native);
    PrintAllFile(full_path);
}
void  PrintAllFile(fs::path  & full_path)
{
   if (fs::exists(full_path))
   {
       fs::directory_iterator item_begin(full_path);
       fs::directory_iterator item_end;
       for ( ;item_begin   !=  item_end; item_begin ++ )
       {
           if (fs::is_directory( * item_begin))
           {
               cout  << item_begin -> native_file_string() << " /t[dir] " << endl;
               PrintAllFile( * item_begin);
           }
           else
           {
               cout  << item_begin -> native_file_string() << endl;
           }
       }
   }
} 

    不知道自己的boost是不是没配置正确,总是有错误

“native_file_string”: 不是“boost::filesystem2::basic_directory_entry<Path>”的成员 

可能是头文件问题,但又不知道是哪个头文件,然后开始追踪,看着头文件改了改,可以运行了哈。

自己修改之后的代码:

#include <boost/filesystem/operations.hpp>
#include <boost/filesystem/path.hpp>
#include <boost/filesystem.hpp>
#include <iostream>
using namespace std;
namespace fs = boost::filesystem;
void print_all_files( fs::path & full_path );
int main(int argc, char **argv)
{
    fs::path full_path("D://My Documents//imageclipper//imageclipper//", fs::native);
    print_all_files( full_path );
    return 0;
}
void print_all_files( fs::path & full_path )
{
    if ( fs::exists(full_path) )
    {
        fs::directory_iterator item_begin(full_path);
        fs::directory_iterator item_end;
        for ( ; item_begin != item_end; item_begin++ )
        {
            if ( fs::is_directory(*item_begin) )
            {
                cout << item_begin->path() << endl;
                cout << item_begin->filename() << "/t[dir] " << endl;
                string sub_dir_str(full_path.native_file_string());
                sub_dir_str.append(item_begin->filename());
                sub_dir_str.append("//");
                fs::path sub_dir(sub_dir_str);
                print_all_files( sub_dir );
            }
            else
            {
                cout << '/t' <<item_begin->filename() << endl;
            }
        }
    }
} 

 

测试环境:vs2005,boost1.44.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值