Linux上的Boost Filesystem创建的目录用​​“\”替换“/”

时间:2009-12-24 23:41:33

标签: c++ linux boost ubuntu-9.10 boost-filesystem

在以下示例中使用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上进行测试

1 个答案:

答案 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