作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
如 documentation 中所述,以下的预期输出是:
boost::filesystem::path filePath1 = "/home/user/";
cout << filePath1.parent_path() << endl; // outputs "/home/user"
boost::filesystem::path filePath2 = "/home/user";
cout << filePath2.parent_path() << endl; // outputs "/home"
问题是,你如何处理这个问题?也就是说,如果我接受一个路径作为参数,我不希望用户关心它是否应该有尾部斜线。看起来最简单的做法是在尾部附加一个斜杠,然后调用 parent_path()
两次以获得我想要的“/home”的父路径:
boost::filesystem::path filePath1 = "/home/user/";
filePath1 /= "/";
cout << filePath1.parent_path().parent_path() << endl; // outputs "/home"
boost::filesystem::path filePath2 = "/home/user";
filePath2 /= "/";
cout << filePath2.parent_path().parent_path() << endl; // outputs "/home"
但这看起来很荒谬。有没有更好的方法在框架内处理这个问题?
最佳答案
您可以在 C++17 中使用 std::filesystem::canonical
:
namespace fs = std::filesystem;
fs::path tmp = "c:\\temp\\";
tmp = fs::canonical(tmp); // will remove slash
fs::path dir_name = tmp.filename(); // will get temp
关于c++ - parent_path() 带或不带斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36941934/
如documentation中所述,以下内容的预期输出为: boost::filesystem::path filePath1 = "/home/user/"; cout << filePath1.p
如 documentation 中所述,以下的预期输出是: boost::filesystem::path filePath1 = "/home/user/"; cout << filePath1.p
我想检查用户输入的路径。输入必须提供不存在的文件路径。此外,如果输入还提供目录,则这些目录必须存在。 示例输入: /existent_dir_a/existent_dir_b/existent_fil
作为输入,函数获取文件路径和名称参数 const QString& buildSourcePathAndName 它只需要提取路径以供进一步处理。我使用下面的代码来做到这一点。 boost::fil
我是一名优秀的程序员,十分优秀!