撰写路径(使用boost :: filesystem)

时间:2010-05-04 16:25:32

标签: path relative-path concatenation boost-filesystem

我有一个描述输入数据的文件,它被分成几个其他文件。在我的描述符文件中,我首先给出路径A ,它告诉我找到所有其他文件的位置。

发起者可以设置相对(描述符文件的位置)或绝对路径。

调用我的程序时,用户会给出描述符文件的名称。它可能不在当前工作目录中,因此给出的文件名B 也可能包含目录。

为了让我的程序始终在正确的位置找到输入文件,我需要结合这些信息。如果给出的路径 A 是绝对的,我只需要那个。如果它是相对的,我需要将它连接到路径 B (即文件名的目录部分)。

我认为boost::filesystem::complete可能会为我完成这项工作。不幸的是,它似乎不是。我也不明白如何测试给定的路径绝对与否。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

实际上我先被误导了,但现在自己找到了解决方案。当“base”保存路径A时,filename保存B:

boost::filesystem::path basepath(base), filepath(filename);
if (!basepath.is_complete())
    basepath = filepath.remove_leaf() /= basepath;
base = basepath.string();

它至少适用于Linux(没有增强功能很容易做到,但是很好......),还是要用Windows进行测试。