Můžete se podívat na Boost.Filesystem
knihovna. Konkrétně existuje metoda equivalent
zdá se, že dělá přesně to, co hledáte:
using namespace boost::filesystem;
path p("/path/to/file/one");
path q("/sym_link/to/one");
assert(equivalent(p, q));
Knihovna systému souborů
Od C++17 můžete použít standardní <filesystem>
knihovna. Funkce, kterou hledáte, je equivalent
, pod jmenným prostorem std::filesystem
:
bool std::filesystem::equivalent(const std::filesystem::path& p1, const filesystem::path& p2);
Abychom to shrnuli z dokumentace:tato funkce bere jako parametry dvě cesty a vrací true, pokud odkazují na stejný soubor nebo adresář, jinak false. Existuje také noexcept
přetížení, které přebírá třetí parametr:std::error_code
do kterého se uloží případná chyba.
Pro více informací se podívejte na mou úplnou odpověď na další otázku přetečení zásobníku.
nedefinovaný odkaz na symbol '[email protected]@GLIBC_2.4'
Proč cat /dev/urandom zavěsil můj bash skript?