【发布时间】:2018-05-20 21:41:54
【问题描述】:
我的代码的 TL;DR 如下:
server::server(boost::filesystem::path mappath) : mappath(mappath) {
if(boost::filesystem::is_directory(mappath) && boost::filesystem::exists(mappath)) {
// Do some stuff here
} else {
boost::filesystem::create_directory(mappath);
}
}
当mappath 存在时,代码可以工作(几乎没有,因为我发现 Boost 在几乎每个函数中都存在段错误)。
但是,如果没有,它会引发异常并显示“错误地址”消息。
当我通过std::cout 打印mappath 时,它返回:
"/home/myusername/.testfolder/huni/ENTER YOUR TEXT HERE"
哪个是正确的。
请注意,当我尝试在 else 语句中打印 mappath inside 时,它会出现段错误。
我推断is_directory 或exists 中的mappath 有问题,因为在if 语句之前打印之前 时没有错误。
【问题讨论】:
-
您可能正在寻找
boost::filesystem::create_directories。但这只是猜测,因为我们无法重现您的问题。 -
@DrewDormann 将其替换为
create_directories后,它现在会在引发异常的位置出现段错误。 -
我们只能猜测您的程序可能有什么问题。请edit您的问题提供Minimal, Complete, and Verifiable example。
-
有趣的是,当我尝试运行您发布的代码时,我得到了“使用未声明的标识符 'server'”。
-
不管怎样,制作一个最小的失败程序并在此处发布代码。不幸的是,一个功能无法帮助其他人帮助您。
标签: c++ c++11 boost boost-filesystem