【问题标题】:Compose path (with boost::filesystem)撰写路径(使用 boost::filesystem)
【发布时间】:2011-02-15 13:28:05
【问题描述】:

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

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

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

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

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

有什么想法吗?

【问题讨论】:

    标签: path relative-path concatenation boost-filesystem


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2016-01-18
      • 1970-01-01
      • 2012-09-20
      • 2012-04-27
      • 1970-01-01
      • 2010-09-28
      • 2010-12-17
      • 2011-04-25
      相关资源
      最近更新 更多