повысить проверку включения файловой системы 3 - PullRequest
1 голос
/ 24 февраля 2012

Я использую библиотеку файловой системы boost и, имея два пути, мне нужно знать, существует ли элегантный способ проверки, является ли path1 дочерним по отношению к path2 (например, path1 = / usr / local, path2 = / usr) , Я могу сделать это с помощью строковых функций, но мне было интересно, если есть способ, используя функции повышения файловой системы. Я мог бы сделать это с помощью итераторов пути, это единственный способ? Есть ли какая-нибудь вспомогательная функция, которая выполняет эту проверку? Я искал документацию, но ничего не смог найти. Спасибо

1 Ответ

1 голос
/ 24 февраля 2012
*path1.begin() == *path2.begin()

Это, однако, будет означать, что «c: / foo» разделяет базу с «c: / bar», что может быть непреднамеренным.

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

Таким образом, вы можете увидеть, сколько атомов совпадают, я предлагаю сначала использовать boost :: filesystem :: absolute, если вы хотите сделать его устойчивым.

...