所以,我使用的是像
这样的简单代码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 ++程序的位置创建目录时,没有失败。
请帮助我,我真的不明白这里有什么:(
答案 0 :(得分:1)
当create_directory
返回false时,表示它没有创建目录。造成这种情况的最可能原因是该目录已经存在!在这种情况下,它将返回false,但不会设置error_code
。
您问题中的代码假定函数是否返回false则发生错误,但这是错误的。 False表示它没有创建。