[Boost::filesystem] wyszukiwanie plików o danym rozszerzeniu
Ostatnio zmodyfikowano 2018-04-24 23:12
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 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 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 |
|
DejaVu |
» 2018-04-24 23:12:15 |
|
« 1 » |