Vous pouvez consulter le Boost.Filesystem
bibliothèque. Concrètement, il existe une méthode equivalent
qui semble faire exactement ce que vous cherchez :
using namespace boost::filesystem;
path p("/path/to/file/one");
path q("/sym_link/to/one");
assert(equivalent(p, q));
Bibliothèque de système de fichiers
Depuis C++17, vous pouvez utiliser le standard <filesystem>
bibliothèque. La fonction que vous recherchez est equivalent
, sous l'espace de noms std::filesystem
:
bool std::filesystem::equivalent(const std::filesystem::path& p1, const filesystem::path& p2);
Pour résumer à partir de la documentation :cette fonction prend deux chemins en paramètres et renvoie vrai s'ils référencent le même fichier ou répertoire, faux sinon. Il y a aussi un noexcept
surcharge qui prend un troisième paramètre :un std::error_code
dans lequel enregistrer toute erreur éventuelle.
Pour plus d'informations, consultez ma réponse complète à une autre question de débordement de pile.