【发布时间】:2016-10-26 14:38:46
【问题描述】:
所以,我使用了一个简单的代码,比如
boost::system::error_code ec;
if (!boost::filesystem::create_directory(out_path.parent_path(), ec)) {
std::cerr << "couldn't create directory\n";
std::cerr << ec.message() << "\n";
return -1;
}
我正在尝试创建将绝对文件路径传递为out_path 的目录。结果是,我进入 if 分支,并且 ec.message() 返回 Success。
我拥有out_path 目录的所有权利,可以读取、写入、执行任何内容。
我完全生气了。我可以直接从 bash 创建具有相同路径的目录,但我不能使用我编写的 c++ 代码。
但是没有失败,当我以out_path 的形式传递相对传递时,例如“temp”,并且从运行 c++ 程序的位置创建目录。
请帮帮我,我真的不明白这里发生了什么:(
【问题讨论】:
-
“我对 out_path 目录拥有所有权限”我很困惑,out_path 是否存在?
-
为什么不使用 create_directories 而不是 create_directory?
-
out_path不存在,但out_path.parent_path()存在。我还尝试使用create_directories与相同的结果 UPDout_path.parent_path().parent_path()存在,out_path.parent_path()不存在 -
那么out_path.parent_path()是存在的,为什么要重新创建呢?
-
抱歉,我说的不准确。它也不存在。比如说,我有 /A/B/C,那么 out_path 就是 /A/B/C/D/file。我想在/A/B/C下创建D,存在的。
标签: c++ linux boost boost-filesystem