如何将路径拆分为单独的字符串?

ida*_*hmu 7 c++ boost split cross-platform path

这是一个免费的问题:
如何从单独的字符串(安全)构建一个完整的路径字符串?

所以我的问题是,如何以跨平台的方式将路径拆分为单独的字符串.

这个解决方案,使用Boost.Filesystem非常优雅,Boost必须实现一些splitPath()函数.我找不到任何东西.

注意:请记住,我自己可以完成这项任务,但我对封闭的盒子解决方案更感兴趣.

seh*_*ehe 11

的确,有path_iterator.但如果你想要优雅:

#include <boost/filesystem.hpp>

int main() {
    for(auto& part : boost::filesystem::path("/tmp/foo.txt"))
        std::cout << part << "\n";
}
Run Code Online (Sandbox Code Playgroud)

打印:

"/"
"tmp"
"foo.txt"
Run Code Online (Sandbox Code Playgroud)

    for(auto& part : boost::filesystem::path("/tmp/foo.txt"))
        std::cout << part.c_str() << "\n";
Run Code Online (Sandbox Code Playgroud)

版画

/
tmp
foo.txt
Run Code Online (Sandbox Code Playgroud)

无需担心移动部件


ALi*_*iff 5

std::vector<std::string> SplitPath(const boost::filesystem::path &src) {
    std::vector<std::string> elements;
    for (const auto &p : src) {
        elements.emplace_back(p.filename());
    }
    return elements;
}
Run Code Online (Sandbox Code Playgroud)