/ / boost włączanie systemu plików 3 ścieżka sprawdzania - c ++, boost, boost-system plików

zwiększenie kontroli dostępu do ścieżki systemu 3 - c ++, boost, system plików boost

Używam biblioteki systemu plików doładowania imając dwie ścieżki, muszę wiedzieć, czy istnieje elegancki sposób sprawdzenia, czy ścieżka1 jest dzieckiem ścieżki path2 (np. ścieżka1 = / usr / local, ścieżka2 = / usr). Mogę to zrobić za pomocą funkcji łańcuchowych, ale zastanawiałem się, czy istnieje sposób użycia funkcji systemu plików boost. Mógłbym to zrobić za pomocą iteratorów ścieżek, czy to jedyny sposób? Czy jest jakaś funkcja pomocnicza, która sprawdza to? Przeszukałem dokumentację, ale nic nie znalazłem. Dzięki

Odpowiedzi:

1 dla odpowiedzi № 1
*path1.begin() == *path2.begin()

Oznacza to jednak, że „c: / foo” dzieli bazę z „c: / bar”, co może być niezamierzone.

for( boost::filesystem::path::iterator itrLeft( path1.begin() ), itrRight( path2.begin() ); *itrLeft == *itrRight && itrLeft != path1.end() && itrRight != path2.end(); ++itrLeft, ++itrRight )

W ten sposób możesz zobaczyć, ile atomów się zgadza, sugeruję najpierw użyć boost :: fileystem :: absolut, jeśli chcesz, aby był solidny.