我正在读取以Windows格式存储为相对路径的数据库中的路径名,并尝试在Unix系统上从它们创建boost :: filesystem ::路径。会发生什么是构造函数调用将整个字符串解释为文件名。我需要将路径转换为正确的Posix路径,因为它将在本地使用。boost :: filesystem - 如何从posix plattforms上的Windows路径字符串创建加速路径?
我没有在boost :: filesystem参考中找到任何转换函数,也没有通过google找到。我只是失明了,是否有明显的解决方案?如果不是,你会如何做到这一点?
例子:
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;
}
编辑:当然我只需更换反斜杠,但有说, “只是工作(TM)” 适用于Windows和Unix plattforms的解决方案?
不幸的是,我可能不会更改数据库中的格式,所以我必须去替换反斜杠...... – VolkA 2010-06-02 13:42:03