在函数读取目录下,将文件名(通过push_back())插入到vector
中#include <dirent.h>
void open(string path){
DIR* dir;
dirent *pdir;
dir = opendir(path.c_str());
while (pdir = readdir(dir)){
vectorForResults.push_back(pdir->d_name);
}
}
问题:如何使用启动库检查每个文件的大小(来自当前的指令)?
我找到了http://en.highscore.de/cpp/boost/filesystem.html
中描述的方法就是这样:
boost::filesystem::path p("C:\\Windows\\win.ini");
std::cout << boost::filesystem::file_size(p) << std::endl;
有人可以帮助我在open()函数中实现如何实现提升吗?特别是如何将当前目录路径名分配给变量p,然后迭代文件名。
答案 0 :(得分:1)
这有帮助吗?
<强> Live On Coliru 强>
#include <boost/filesystem.hpp>
#include <boost/range/iterator_range.hpp>
#include <iostream>
namespace fs = boost::filesystem;
int main()
{
for(auto& f : boost::make_iterator_range(fs::directory_iterator("."), {}))
{
if (fs::is_regular(f))
std::cout << fs::file_size(f) << "\t" << f << "\n";
}
}
请注意"."
是当前目录
答案 1 :(得分:0)
#include <dirent.h>
void open(std::string path){
DIR* dir;
dirent *pdir;
dir = opendir(path.c_str());
while (pdir = readdir(dir)){
std::string p = path + "/" + pdir->d_name;
vectorForResults.push_back(pdir->d_name);
std::cout << boost::filesystem::file_size(p) << std::endl;
}
}
我认为这就是你要找的东西。 您不需要创建boost :: filesystem :: path对象。
或者你可以使用C函数stat:http://linux.die.net/man/2/stat