我需要创建一个函数来删除文件路径中的任何内容,例如..“”或.“”。因此,如果我执行resolvePath("/root\\\\directory1/directory2\\\\\\\\.."),它将返回"root/directory1。我尝试为路径的每一部分创建一个char* 数组,但我无法获得它的每一段。
resolvePath("/root\\\\directory1/directory2\\\\\\\\..")
"root/directory1
7rfyedvj1#
两个真正的跨平台替代方案是boost和Qt,下面我们演示了这两个方案:
path canonical(const path& p, const path& base = current_path()); path canonical(const path& p, system::error_code& ec); path canonical(const path& p, const path& base, system::error_code& ec);
QFileInfo fileInfo("/root\\\\directory1/directory2\\\\\\\\..")) qDebug() << fileInfo.canonicalFilePath();
pokxtpni2#
从你给出的示例路径看,你是在一个类Unix系统上,你可以使用realpath()来规范你的路径,这至少存在于Linux,BSD和Mac OS上。http://man7.org/linux/man-pages/man3/realpath.3.html
realpath()
vhmi4jdf3#
#include <iostream> #include <filesystem> int main() { // resolves based on current dir std::filesystem::path mypath = std::filesystem::canonical("../dir/file.ext"); std::cout << mypath.generic_string(); // root/parent_dir/dir/file.ext return 0; }
文件:https://en.cppreference.com/w/cpp/filesystem/canonicalhttps://en.cppreference.com/w/cpp/header/filesystem
3条答案
按热度按时间7rfyedvj1#
两个真正的跨平台替代方案是boost和Qt,下面我们演示了这两个方案:
增强溶液:boost::文件系统::规范
Qt溶液:Q文件信息
pokxtpni2#
从你给出的示例路径看,你是在一个类Unix系统上,你可以使用
realpath()
来规范你的路径,这至少存在于Linux,BSD和Mac OS上。http://man7.org/linux/man-pages/man3/realpath.3.html
vhmi4jdf3#
文件:
https://en.cppreference.com/w/cpp/filesystem/canonical
https://en.cppreference.com/w/cpp/header/filesystem