【发布时间】:2011-02-26 19:50:15
【问题描述】:
我正在从数据库中读取路径名,这些路径名以 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 平台?
【问题讨论】:
标签: c++ boost filesystems