在以下示例中使用Boost Filesystem的createdirectory(和createdindorsies)函数时,“/”将替换为“\”。
boost::filesystem::path path ("/data/configSet");
boost::filesystem::create_directory(path);
此代码剪切生成一个名为“data \ configSet”的目录,而不是在“data”中创建“configSet”的子目录。使用createdirectories();
会出现同样的问题在Windows系统上执行代码时不会发生此问题。我目前正在使用Ubuntu 9.10在Linux上进行测试
答案 0 :(得分:3)
看起来由于某种原因,boost :: filesystem认为你在Windows而不是Linux,因此使用的是Windows风格的路径名(由\分隔)。您是否可以发布有关如何构建Boost以及如何包含标题的更多信息?您是否可以在Linux上构建Windows版本的Boost?
编辑:我尝试将自己设置为尽可能靠近您的配置。安装了Ubuntu 9.10,libboost1.40-all-dev。当我编译并运行以下程序时,它按预期工作,在configSet
中创建名为/data
的目录。
#include <boost/filesystem.hpp>
int main() {
boost::filesystem::path p("/data/configSet");
boost::filesystem::create_directory(p);
return 0;
}
您是否可以尝试使用以下命令编译和运行该程序,看看它是否会给您不同的结果?
$ g++ -o boost-filesystem -lboost_filesystem boost-filesystem.cpp
$ ./boost-filesystem