1

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

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

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

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

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

有任何想法吗?

4

1 回答 1

2

实际上,我首先被误导了,但现在我自己找到了解决方案。当“base”包含路径 A,文件名包含 B:

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

它至少可以在 Linux 上运行(如果没有 boost 很容易做到,但是哦,好吧..),仍然需要在 Windows 上进行测试。

于 2010-05-04T16:40:46.123 回答