代码之家  ›  专栏  ›  技术社区  ›  ypnos

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

  •  1
  • ypnos  · 技术社区  · 14 年前

    我有一个描述输入数据的文件,它被拆分为其他几个文件。在我的描述符文件中,我首先给出 路径A 这说明在哪里可以找到所有其他文件。

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

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

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

    我想 boost::filesystem::complete 可以为我做这项工作。不幸的是,似乎不是。我也不知道如何测试给定路径是否是绝对路径。

    有什么想法吗?

    1 回复  |  直到 14 年前
        1
  •  2
  •   ypnos    14 年前

    事实上,我一开始被误导了,但现在我自己找到了解决办法。当“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进行测试。