【问题标题】:Extract the parent folder of a directory using boost::filesystem使用 boost::filesystem 提取目录的父文件夹
【发布时间】:2015-11-08 05:53:06
【问题描述】:

假设我有以下文件夹

std::string m("C:\MyFolderA\MyFolderB\MyFolderC");
boost::filesystem::path p(m);

无论如何我可以提取此文件夹的父级。我想从上面的路径中获取字符串MyFolderB.

【问题讨论】:

    标签: c++ boost-filesystem


    【解决方案1】:

    有方法parent_path,查看文档。

    【讨论】:

    • 感谢您的链接。这很有帮助
    【解决方案2】:

    或者,如果您更喜欢字符串操作方法。

    #include <algorithm>
    
    const std::string m("C:\\MyFolderA\\MyFolderB\\MyFolderC");
    const std::string slash("\\");
    auto last_slash(std::find_end(std::cbegin(m), 
                                  std::cend(m), 
                                  std::cbegin(slash),
                                  std::cend(slash)));
    auto second_to_last_slash(std::find_end(std::cbegin(m), 
                                            last_slash,
                                            std::cbegin(slash), 
                                            std::cend(slash)));
    
    const std::string parent(++second_to_last_slash, last_slash);
    

    Live on Coliru,如果你感兴趣的话。

    【讨论】:

    • 好点!用户的问题使用了 Windows 风格的路径,所以我就是这样解决的。我相信这将适用于任意字符串m,如果slash 在Linux 上下文中被#ifdefed 初始化为"/"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-11
    • 1970-01-01
    • 2015-03-26
    • 1970-01-01
    • 2012-01-25
    • 1970-01-01
    相关资源
    最近更新 更多