Как узнать, соответствует ли path определенному родителю?

#c #search #boost #boost-filesystem

#c #Поиск #повышение #boost-файловая система

Вопрос:

Итак, у нас есть такой родительский элемент, somepath/** поэтому, если какой-либо из них отправит нам, somepath/myfolder/file мы получим true , и если мы получим, someotherpath/ мы получим false . Итак, как узнать, соответствует ли path определенному родителю?

Комментарии:

1. Что такое «часть»? Вы имеете в виду «родительский»?

2. Я полагаю, что «parten» — это слово на немецком, и Google говорит, что оно также используется на испанском, но не на английском — не могли бы вы пояснить, что вы под этим подразумеваете? Не зная, что вы под этим подразумеваете, ваш вопрос трудно расшифровать (в лучшем случае).

3. @Jerry: Как носитель немецкого языка, я могу сказать, что это не так 😉 Быстрый поиск в Google в разделе «parten path» предлагает «родительский путь», что заставило меня подумать, что он может означать «родительский». Может иметь некоторый смысл…

4. @kiw: Я поверю вам на слово — когда дело доходит до немецкого, я в лучшем случае отталкиваюсь от далеких воспоминаний. Родитель вроде имеет смысл, но даже если это так, он все еще не включил достаточно для ответа. Например, хочет ли он иметь дело с такими вещами, как символические ссылки, или нет?

Ответ №1:

Вам нужно нормализовать оба пути, затем вы выполняете простое сравнение подстрок, чтобы увидеть, начинается ли ваш путь, о котором идет речь, с нормализованного ссылочного пути.

Нормализация включает добавление текущего рабочего каталога к относительному пути, нормализацию регистра, если ваша файловая система не чувствительна к регистру, возможно, разрешение символических ссылок и, возможно, даже тестирование жестких ссылок. Если вы хотите, чтобы сам файл был символической ссылкой, вы должны извлечь часть пути перед нормализацией.

Я сделал это в Linux с помощью realpath() функции, и она работает очень хорошо, даже если ссылочный path содержит символические ссылки. Однако не знаю, как это сделать с помощью boost.

Комментарии:

1. и поскольку вопрос включает тег boost_filesystem, я предлагаю использовать system_complete() метод для нормализации