boost - listar - crear carpeta ubuntu comandos
Ejemplo de boost directory_iterator: cómo listar archivos de directorio no recursivos (2)
¿Cómo debo usar directory_iterator
para listar archivos de directorio (no recursivos)?
Además, ¿qué archivos de cabecera / libs debo agregar / vincular u otras configuraciones que debo hacer? Estoy usando boost en mi proyecto, pero por alguna razón directory_iterator
es un "identificador no calificado" mientras puedo usar otras funciones de boost.
Actualizar
Otra solución:
#include <filesystem>
#include <boost/filesystem.hpp>
#include <iostream>
using namespace boost::filesystem;
for (directory_iterator itr(path_ss); itr!=directory_iterator(); ++itr)
{
cout << itr->path().filename() << '' ''; // display filename only
if (is_regular_file(itr->status())) cout << " [" << file_size(itr->path()) << '']'';
cout << ''/n'';
}
El ejemplo tut3 es lo que estás buscando:
Aquí hay una versión simplificada basada en c ++ 11:
#include <boost/filesystem.hpp>
#include <boost/range/iterator_range.hpp>
#include <iostream>
using namespace boost::filesystem;
int main(int argc, char *argv[]) {
path p(argc>1? argv[1] : ".");
if(is_directory(p)) {
std::cout << p << " is a directory containing:/n";
for(auto& entry : boost::make_iterator_range(directory_iterator(p), {}))
std::cout << entry << "/n";
}
}
Puede ver que vinculé boost_system (para las instalaciones de código de error) y boost_filesystem:
g++ -std=c++11 -Os -Wall -pedantic main.cpp -lboost_system -lboost_filesystem && ./a.out .
"." is a directory containing:
"./main.cpp"
"./a.out"
Una solución probada:
#include <boost/filesystem.hpp>
#include <iterator>
#include <iostream>
#include <vector>
using namespace boost::filesystem;
int main(int argc, char *argv[])
{
path p(argc>1? argv[1] : ".");
std::vector<directory_entry> v; // To save the file names in a vector.
if(is_directory(p))
{
copy(directory_iterator(p), directory_iterator(), back_inserter(v));
std::cout << p << " is a directory containing:/n";
for ( std::vector<directory_entry>::const_iterator it = v.begin(); it != v.end(); ++ it )
{
std::cout<< (*it).path().string()<<endl;
}
}
}