Podrías revisar el Boost.Filesystem
biblioteca. Específicamente, hay un método equivalent
que parece hacer exactamente lo que estás buscando:
using namespace boost::filesystem;
path p("/path/to/file/one");
path q("/sym_link/to/one");
assert(equivalent(p, q));
Biblioteca del sistema de archivos
Desde C++17 puedes usar el estándar <filesystem>
biblioteca. La función que está buscando es equivalent
, en el espacio de nombres std::filesystem
:
bool std::filesystem::equivalent(const std::filesystem::path& p1, const filesystem::path& p2);
Para resumir de la documentación:esta función toma dos rutas como parámetros y devuelve verdadero si hacen referencia al mismo archivo o directorio, de lo contrario, devuelve falso. También hay un noexcept
sobrecarga que toma un tercer parámetro:un std::error_code
en el que guardar cualquier posible error.
Para obtener más información, consulte mi respuesta completa a otra pregunta sobre el desbordamiento de pila.