Одинаковые пути в C++
Два существующих пути на диске сравнивает equivalent после разрешения символических ссылок.
Подкаталог "." внутри рабочего каталога
ссылается на тот же inode, что и сам каталог.
Запишем пару путей и выведем результат
сравнения:
#include <filesystem>
#include <iostream>
std::filesystem::path here = std::filesystem::current_path();
std::filesystem::path dot = here / ".";
bool same = std::filesystem::equivalent(here, dot);
std::cout << same << "\n";
Для несуществующих путей вызов завершится ошибкой - проверку делают только над реальными файлами и каталогами.
Сравните std::filesystem::current_path
и std::filesystem::current_path / "."
через std::filesystem::equivalent. Выведите
логическое значение.