Вопрос

Я использую библиотеку BOOST файловой системы, и имея два пути, мне нужно знать, если есть элегантный способ проверки, если Path1 является ребенком PATH2 (например, PATH1= / usr / local, path2= / usr)ОтказЯ могу сделать это, используя строковые функции, но мне было интересно, есть ли способ использовать функции Boost файловой системы.Я мог бы сделать это с пути итераторы, это единственный способ?Есть ли функция HELPER, которая делает эту проверку?Я искал в документацию, но ничего не мог найти. Спасибо

Это было полезно?

Решение

*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 :: Абсолют сначала, если вы хотите сделать его надежным.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top