我想知道是否有一种可移植的方法来确定 2 个不同的路径是否实际上引用了同一个文件。
我已阅读此线程,但它是特定于 Windows 的。
AFAIK,fstream不适合这份工作。
从 C++17 开始,您可以使用标准<filesystem>
库。您正在寻找的功能是equivalent
,在命名空间下std::filesystem
:
bool std::filesystem::equivalent(const std::filesystem::path& p1, const filesystem::path& p2 );
从文档中总结:此函数将两个路径作为参数,true
如果它们引用相同的文件或目录,则返回,false
否则返回。还有一个noexcept
带第三个参数的重载:std::error_code
保存任何可能的错误的地方。