0

在以下示例中使用 Boost Filesystem 的 createdirectory(和 createdirectories)函数时,“/”被替换为“\”。

boost::filesystem::path path ("/data/configSet");
boost::filesystem::create_directory(path);

这段代码被剪断会生成一个名为“data\configSet”的目录,而不是在“data”中创建“configSet”的子目录。使用 createdirectories() 也会出现同样的问题;

在 Windows 系统上执行代码时不会出现此问题。我目前正在使用 Ubuntu 9.10 在 Linux 上进行测试

4

1 回答 1

3

看起来由于某种原因 boost::filesystem 认为您使用的是 Windows,而不是 Linux,因此使用的是 Windows 样式的路径名(由 \ 分隔)。您能否发布更多关于您如何构建 Boost 以及如何包含标题的信息?您是否正在 Linux 上构建 Windows 版本的 Boost?

编辑:我尝试将自己设置为尽可能接近您的配置。Ubuntu 9.10,安装了 libboost1.40-all-dev。当我编译并运行以下程序时,它按预期工作,创建了一个名为configSetin的目录/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
于 2009-12-25T00:01:38.740 回答