如何解析文件路径

时间:2014-04-20 13:38:59

标签: c++ qt boost filepath

我需要创建一个能删除任何内容的函数,例如'..'或'。'在文件路径中。因此,如果我resolvePath("/root\\\\directory1/directory2\\\\\\\\.."),它将返回"root/directory1。我尝试在路径的每个部分制作一个char *数组,但我无法得到它的每个部分。

2 个答案:

答案 0 :(得分:4)

两个真正的跨平台替代方案是提升和Qt,所以这里有两个证明:

提升解决方案:boost::filesystem::canonical

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);

Qt解决方案:QFileInfo

QFileInfo fileInfo("/root\\\\directory1/directory2\\\\\\\\.."))

qDebug() << fileInfo.canonicalFilePath();

答案 1 :(得分:2)

从你给出的示例路径看,你是在类Unix系统上。您可以使用realpath()规范化您的路径。这至少存在于Linux,BSD和Mac OS上。

http://man7.org/linux/man-pages/man3/realpath.3.html