Potresti dare un'occhiata al Boost.Filesystem
biblioteca. Nello specifico, esiste un metodo equivalent
che sembra fare esattamente quello che stai cercando:
using namespace boost::filesystem;
path p("/path/to/file/one");
path q("/sym_link/to/one");
assert(equivalent(p, q));
Libreria di filesystem
Dal C++17 puoi usare lo standard <filesystem>
biblioteca. La funzione che stai cercando è equivalent
, sotto lo spazio dei nomi std::filesystem
:
bool std::filesystem::equivalent(const std::filesystem::path& p1, const filesystem::path& p2);
Per riassumere dalla documentazione:questa funzione accetta due percorsi come parametri e restituisce true se fanno riferimento allo stesso file o directory, false in caso contrario. C'è anche un noexcept
overload che accetta un terzo parametro:un std::error_code
in cui salvare ogni possibile errore.
Per ulteriori informazioni dai un'occhiata alla mia risposta completa a un'altra domanda sull'overflow dello stack.