我有一个描述输入数据的文件,它被分成几个其他文件。在我的描述符文件中,我首先给出路径A ,它告诉我找到所有其他文件的位置。
发起者可以设置相对(描述符文件的位置)或绝对路径。
调用我的程序时,用户会给出描述符文件的名称。它可能不在当前工作目录中,因此给出的文件名B 也可能包含目录。
为了让我的程序始终在正确的位置找到输入文件,我需要结合这些信息。如果给出的路径 A 是绝对的,我只需要那个。如果它是相对的,我需要将它连接到路径 B (即文件名的目录部分)。
我认为boost::filesystem::complete
可能会为我完成这项工作。不幸的是,它似乎不是。我也不明白如何测试给定的路径绝对与否。
有什么想法吗?
答案 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进行测试。