Библиотека файловой системы
Начиная с C ++ 17 вы можете использовать стандартную библиотеку файловой системы . Включите его, используя #include <filesystem>
. Вы можете получить к нему доступ даже в старых версиях C ++, см. Сноску.
Функция, которую вы ищете: equivalent
, под пространством имен std::filesystem
:
bool std::filesystem::equivalent(const std::filesystem::path& p1, const filesystem::path& p2 );
Подводя итог документации : эта функция принимает два пути в качестве параметров и возвращает true, если они ссылаются на один и тот же файл или каталог, и false в противном случае. Существует также перегрузка noexcept
, которая принимает третий параметр: std::error_code
, в котором сохраняется любая возможная ошибка.
Пример
#include <filesystem>
#include <iostream>
//...
int main() {
std::filesystem::path p1 = ".";
std::filesystem::path p2 = fs::current_path();
std::cout << std::filesystem::equivalent(p1, p2));
//...
}
Выход:
1
Использование файловой системы до C ++ 17
Чтобы использовать эту библиотеку в версиях до C ++ 17, вы должны включить экспериментальные языковые функции в вашем компиляторе и включить библиотеку следующим образом: #include <experimental/filesystem>
. Затем вы можете использовать его функции в пространстве имен std::experimental::filesystem
. Обратите внимание, что экспериментальная библиотека файловой системы может отличаться от библиотеки C ++ 17. Смотри документацию здесь .
Например:
#include <experimental/filesystem>
//...
std::experimental::filesystem::equivalent(p1, p2);