使用boost库编写跨平台遍历文件夹下的所有文件
来源:互联网 发布:javascript正则表达式= 编辑:程序博客网 时间:2024/06/02 06:51
#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库编写跨平台遍历文件夹下的所有文件
- 1.0使用递归操作遍历文件夹下的所有文件
- 遍历文件夹下的所有文件
- 遍历文件夹下的所有文件
- vc遍历文件夹下的所有文件
- 遍历文件夹下的所有文件
- matlab遍历文件夹下的所有文件
- C++遍历文件夹下的所有文件
- 递归遍历文件夹下的所有文件
- python遍历文件夹下的所有文件
- 遍历文件夹下的所有文件
- 遍历文件夹下的所有文件
- C++遍历文件夹下的所有文件
- C++遍历文件夹下的所有文件
- Golang遍历文件夹下的所有文件
- C++遍历文件夹下的所有文件
- java遍历文件夹下所有的文件
- 遍历文件夹下所有文件
- Easyui+Spring Mvc导出Excel:支持按模板样式导出、合并表头、合并单元格、多sheet
- NSMutableString的基本用法
- myeclipse问题——中文乱码
- WEB前端优化之内容篇
- 图形渐变效果(二)
- 使用boost库编写跨平台遍历文件夹下的所有文件
- UVa 11520 填充正方形
- 手机号码归属地api接口大全
- jobcontrol类
- ssh 关闭后仍保持当前运行的进程
- 程序员大牛 Jeff Atwood 的两本中文书
- 【Unity3D】【NGUI】屏幕自适应
- jquery 点击切换面板及图标
- 一致性hash