Boost.Filesystem
をチェックアウトできます 図書館。具体的には equivalent
という方法があります それはあなたが探していることを正確に行うようです:
using namespace boost::filesystem;
path p("/path/to/file/one");
path q("/sym_link/to/one");
assert(equivalent(p, q));
ファイル システム ライブラリ
C++17 以降、標準の <filesystem>
を使用できます 図書館。あなたが探している関数は equivalent
です 、名前空間 std::filesystem
の下 :
bool std::filesystem::equivalent(const std::filesystem::path& p1, const filesystem::path& p2);
ドキュメントから要約すると、この関数は 2 つのパスをパラメーターとして取り、それらが同じファイルまたはディレクトリを参照する場合は true を返し、それ以外の場合は false を返します。 noexcept
もあります 3 番目のパラメーターを取るオーバーロード:std::error_code
考えられるエラーを保存します。
詳細については、別のスタック オーバーフローの質問に対する私の完全な回答をご覧ください。