Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Boost::filesystem] wyszukiwanie plików o danym rozszerzeniu

Ostatnio zmodyfikowano 2018-04-24 23:12
Autor Wiadomość
matiziel
Temat założony przez niniejszego użytkownika
[Boost::filesystem] wyszukiwanie plików o danym rozszerzeniu
» 2018-04-24 17:31:18
Witam,
otóż w moim programie muszę wyszukiwać pliki z danego katalogu o danym rozszerzeniu. Więc mam dwie funkcje, pierwsza odpowiada za wyszukiwanie plików o danym rozszerzeniu
C/C++
namespace fs = boost::filesystem;
void get_all( const fs::path & root, const std::string & ext, std::vector < fs::path >& ret )
{
    if( !fs::exists( root ) || !fs::is_directory( root ) ) return;
   
    fs::recursive_directory_iterator it( root );
    fs::recursive_directory_iterator endit;
   
    for(; it != endit; ++it )
    {
        if( fs::is_regular_file( * it ) && it->path().extension() == ext )
             ret.push_back( it->path().filename() );
       
       
    }
}
ale nie działa ona tak jak powinna bo vector ret za każdym razem jest pusty.
A druga służy do wyszukiwania pliku o danej nazwie
C/C++
bool find_file( const boost::filesystem::path & dir_path, const std::string & file_name, boost::filesystem::path & path_found )
{
    if( !exists( dir_path ) || !is_directory( dir_path ) )
         return false;
   
    boost::filesystem::directory_iterator iter( dir_path ), end_iter;
    for(; iter != end_iter; ++iter ) {
        if( boost::filesystem::is_directory( * iter ) ) {
            if( find_file( * iter, file_name, path_found ) )
                 return true;
           
        }
        else if( iter->leaf() == file_name ) {
            path_found = * iter;
            return true;
        }
    }
    return false;
}
lecz tutaj wyrzuca błąd przy metodzie leaf(). Na innych stronach znalazłem że pochodzi ona ze starszych wersji boosta i w nowszych jest zastąpiona filename(), która również nie działa. I stąd moje pytanie, co zrobić żeby te funkcje działały tak jak powinny? Ewentualnie czy mógłby ktoś napisać wskazówkę jak napisać je od nowa? Korzystam z wersji boosta 16.2.
Pozdrawiam
P-170804
DejaVu
» 2018-04-24 23:12:15
P-170812
« 1 »
  Strona 1 z 1