使用相对路径获取规范的文件路径
How to do it...
#include <iostream> #include <filesystem> using namespace std; using namespace filesystem;int main() { path p {"testdir/foobar.txt"};cout << "current_path : " << current_path() << "\nabsolute_path : " << absolute(p) << "\nsystem_complete : " << system_complete(p) << "\ncanonical(p) : " << canonical(p) << '\n';cout << path{"testdir"} / "foobar.txt" << '\n';cout << "canonical testdir : " << canonical("foobar.txt", current_path() / "testdir") << "\ncanonical testdir 2 : " << canonical(p, current_path() / "testdir/..") << '\n';cout << "equivalence: " << equivalent("testdir/foobar.txt", "testdir/../testdir/foobar.txt") << '\n'; }$ ./canonical_filepath current_path: "/Users/tfc" absolute_path : "/Users/tfc/testdir/foobar.txt" system_complete : "/Users/tfc/testdir/foobar.txt" canonical(p): "/Users/tfc/testdir/foobar.txt" "testdir/foobar.txt" canonical testdir : "/Users/tfc/testdir/foobar.txt" canonical testdir 2 : "/Users/tfc/testdir/foobar.txt" equivalence: 1$ ./canonial_filepath current_path: "/Users/tfc" absolute_path : "/Users/tfc/testdir/foobar.txt" system_complete : "/Users/tfc/testdir/foobar.txt" terminate called after throwing an instance of 'std::filesystem::v1::__cxx11::filesystem_error' what():filesystem error: cannot canonicalize: No such file or directory [testdir/foobar.txt] [/Users/tfc]
How it works...

Last updated