gpt4 book ai didi

c++ - boost::filesystem - 如何在 posix 平台上从 Windows 路径字符串创建 boost 路径?

转载 作者:搜寻专家 更新时间:2023-10-31 00:22:47 25 4
gpt4 key购买 nike

我正在从数据库中读取路径名,这些路径名以 Windows 格式存储为相对路径,并尝试在 Unix 系统上从中创建一个 boost::filesystem::path。发生的是构造函数调用将整个字符串解释为文件名。我需要将路径转换为正确的 Posix 路径,因为它将在本地使用。

我没有在 boost::filesystem 引用中找到任何转换函数,也没有通过谷歌找到任何转换函数。我只是瞎了眼,有明显的解决方案吗?如果没有,你会怎么做?

例子:

std::string win_path("foo\\bar\\asdf.xml");
std::string posix_path("foo/bar/asdf.xml");

// loops just once, as part is the whole win_path interpreted as a filename
boost::filesystem::path boost_path(win_path);
BOOST_FOREACH(boost::filesystem::path part, boost_path) {
std::cout << part << std::endl;
}

// prints each path component separately
boost::filesystem::path boost_path_posix(posix_path);
BOOST_FOREACH(boost::filesystem::path part, boost_path_posix) {
std::cout << part << std::endl;
}

编辑:当然我可以只替换反斜杠,但是是否有一种解决方案对 Windows 和 Unix 平台都“有效(tm)”?

最佳答案

不幸的是,Windows 路径语法是有条件编译的,并且仅在 Windows 上编译时包含。我不明白他们为什么这样做。无论如何,这意味着您始终最多有两个可用的解析器;可移植的,与 Posix 的相同,原生的,这取决于您当前正在编译的平台。

“可行”的方法是将所有路径存储为可移植 (Posix) 格式。您可以在所有平台上同样简单地解析它。

关于c++ - boost::filesystem - 如何在 posix 平台上从 Windows 路径字符串创建 boost 路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2957923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com