使用boost库编写跨平台遍历文件夹下的所有文件

原创 2013年12月03日 13:04:22

#include "boost/filesystem.hpp"
#include <sstream>

bool getFiles( std::string path,std::vector<std::string> &vFiles )

{
using namespace boost::filesystem;
typedef recursive_directory_iterator  rd_iterator;
rd_iterator end;
for (rd_iterator pos(path.c_str());pos != end;++pos)
{
if (is_directory(*pos))
{
pos.no_push();
}
std::stringstream streamItem;
streamItem << *pos;
std::string sFileName;
streamItem>>sFileName;
vFiles.push_back(sFileName);
}
return true;

}

这个版本有个Bug,就是文件名中存在空格的时候读取的文件名被截断,正确的做法如下,

bool getDirFiles( std::string sDirName,std::vector<std::string> &vFiles)
{
fs::path fullpath (sDirName);

if(!fs::exists(fullpath)){return false;}
fs::recursive_directory_iterator end_iter;
for(fs::recursive_directory_iterator iter(fullpath);iter!=end_iter;iter++){
try{
if (fs::is_directory( *iter ) ){
//std::cout<<*iter << "is dir" << std::endl;
//ret.push_back(iter->path().string());
}
else
{
//ret.push_back(iter->path().string());
//std::cout << *iter << " is a file" << std::endl;
std::string sFileName = iter->path().string();
vFiles.push_back(sFileName);
}
} catch ( const std::exception & ex ){
std::cerr << ex.what() << std::endl;
continue;
}
}
return true;
}


相关文章推荐

boost 遍历文件夹

     打算仅用c++来实现遍历文件夹,在网上看有很多boost的例子,就拿来参考一下: http://hi.baidu.com/seekvista/blog/item/e3e5e788a57f4...

C++遍历文件夹,使用boost filesystem递归遍历文件夹

#ifndef SCANALLFILES_H #define SCANALLFILES_H #include "boost/filesystem/operations.hpp" #include "b...

C++遍历文件或文件夹

我们常常需要遍历一个文件夹下的所有文件或文件夹。 boost使用wrecursive_directory_iterator提供了遍历子目录或子目录下的文件的能力,使用非常方便。 #include ...

Boost C++ Libraries 遍历文件目录

Boost C++ Libraries 遍历文件目录

boost递归遍历文件夹

boost::filesystem的使用。递归遍历文件夹执行操作。
  • xueyunf
  • xueyunf
  • 2014年03月20日 11:53
  • 1700

boost 遍历文件或目录

#include #include #include #include #include int main(int argc, char **argv) { /////////////...

boost递归遍历文件夹

最近一直处于非常忙碌的状态,一直没有时间给大家带来新的boost使用的文章,好不容易抽出20分钟,这里给大家带来了一个文件夹遍历,并且更加一个源文件目录,构建一个与源文件类似的目标目录。 废话少...

使用boost中的filesystem类库遍历某个目录所有的文件

#include #include 使用boost中的filesystem类库遍历某个目录所有的文件int GetAllFileOfPath(const string strPath){namespa...

C++遍历文件夹,使用boost filesystem递归遍历文件夹

#ifndef SCANALLFILES_H #define SCANALLFILES_H #include "boost/filesystem/operations.hpp" #include...
  • hbhhww
  • hbhhww
  • 2012年10月30日 10:40
  • 6254

C++ 实现跨平台的目录遍历

C++ 实现跨平台的目录遍历
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用boost库编写跨平台遍历文件夹下的所有文件
举报原因:
原因补充:

(最多只允许输入30个字)