Odszukiwanie podfolderow w katalogu

0

Witam, ostatnio zainteresowałem się biblioteką boost - konkretnie filesystem.
Próbowałem napisać kod który w podanym katalogu wyszuka podkatalogi
Niestety kod popełniony poniżej nie działa.Próbowałem korzystać z dokumentacji jednak jej nie ogarniam.
Czytałem też kurs na oficjalnej stronie boosta ale nie mogę znaleźć nic na temat wyszukiwania folderów.
Załączam kod który , jednak nie wiem nawet czy działa, niby się kompiluje jednak program nic nie znajduje.

std::string directoryWhereAreDirectories = "./Data/";
boost::path p(directoryWhereAreDirectories);
boost::directory_iterator end_itr;

for (boost::filesystem::directory_iterator itr(p); itr != end_itr; ++itr)
{
   */abort();*/Program nawet nie wykonuje kodu w tej pętli.
    if (boost::filesystem::is_directory(itr->path()))
    {
    std::cout << itr->path();
    }
}

W katalogu roboczym aplikacji znajduje się folder Data a w tym folderze podfolder "Katalog".
Jak mówiłem powyższy kod nie odnajduję wyżej wymienionego folderu , proszę o wskazanie błędów.

0

Jak ma odnajdywać podfolder, skoro leci powierzchownie?

0

@spartanPAGE powierzchownie ? Co to znaczy? Jak mówiłem nie ogarniam boosta. Czy może mnie naprowadzić jak mogę wyszukać foldery w danym katalogu?

0
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
#include <boost/filesystem.hpp>

using namespace std;
using namespace boost::filesystem;

vector<path> getSubdirs(const path &where)
{
	vector<path> result;
	copy_if(
		directory_iterator(where),
		directory_iterator(),
		back_inserter(result),
		(bool(*)(const path&))is_directory
	);
	return result;
}

int main()
{
	for (auto item : getSubdirs("c:\\windows"))
		cout << item << endl;
	return 0;
}
0

Wielkie dzięki za kod, co prawda słabo go rozumiem ale dzięki.
Znalazłem inny sposób na odszukanie podkatalogów w folderze.
@Azarien możesz mi napisać czy jest jakaś istotna różnica miedzy moim sposobem a twoim.

boost::filesystem::path whereSearch( pathToDirectoryWithFolders );
boost::filesystem::directory_iterator it( whereSearch ), eod;
BOOST_FOREACH( boost::filesystem::path const &p, std::make_pair( it, eod ) )
{
    if(is_directory(p))
    {
    std::string nameOfDirectory = p.filename().string();///Nazwa folderu wyszukanego we wskazanym katalogu.
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1