c ++ - Hvordan krydser jeg i mapper?

Indlæg af Hanne Mølgaard Plasc

Problem



Hvis jeg har en mappe, der har 5 undermapper, og jeg vil søge efter bestemte filer i hver undermappe (mit program er til stede i hovedmappen). Hvordan får jeg mit program til at krydse ind i og ud af disse mapper i C ++?


Jeg har brug for mit program til at køre på Windows platforme.


Tak!

Bedste reference


Den mest oplagte rute er at bruge FindFirstFile og FindnextFile sammen med SetCurrentDirectory. En indlysende måde at krydse underkatalogerne på er at gøre din katalogoverskridende rutine rekursiv.

Andre referencer 1


Brug blot boosts recursive\_directory\_iterator, og filtrer de filer/mappe, du vil have. [5]


boost::filesystem::recursive\_directory\_iterator iter("yourpath");
boost::filesystem::recursive\_directory\_iterator end;
for (; iter != end; ++iter) {
    // check for things like is\_directory(iter->status()), iter->filename() ....
    // optionally, you can call iter->no\_push() if you don't want to
    // enter a directory
    // see all the possibilities by reading the docs.
}

Andre referencer 2


Brug bare en stak og implementer dybde-første søgning (se wiki) http://en.wikipedia.org/wiki/Depth-first\_search[6]


På denne måde kan du (med en lille som muligt stak) krydse enhver trælignende struktur (og Windows 'filsystem er trælignende).