在以下示例中使用 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 上进行测试
最佳答案
出于某种原因,boost::filesystem 似乎认为您使用的是 Windows,而不是 Linux,因此使用的是 Windows 风格的路径名(由\分隔)。您能否发布更多有关如何构建 Boost 以及如何包含标题的信息?您是否正在 Linux 上构建 Windows 版本的 Boost?
编辑:我已尝试将自己设置为尽可能接近您的配置。 Ubuntu 9.10,安装了 libboost1.40-all-dev。当我编译并运行以下程序时,它按预期工作,在 /data
中创建了一个名为 configSet
的目录。
#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
关于c++ - Boost Filesystem 在 Linux 上创建目录,用 "/"替换 "\",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1960075/