gpt4 book ai didi

c++ - Boost.Filesystem create_directories 破坏目录名称

转载 作者:太空狗 更新时间:2023-10-29 23:02:11 31 4
gpt4 key购买 nike

我正在尝试使用 Boost.Filesystem 创建一个目录(目录可以由用户提供,因此它可能是一个包含嵌套目录的路径;该路径中的所有目录、部分目录或不存在目录都可以启动).当我运行程序时,创建了一个目录,但这不是我要求的;包含路径的字符串似乎被破坏了。我从来没有两次得到相同的结果,但目录的名称总是以冒号开头。

一个最小的例子:

#include <iostream>
#include <boost/filesystem.hpp>
namespace fs = boost::filesystem;
int main(int argc, char* argv[]) {
fs::path path = "junk/morejunk";
if (!fs::create_directories(path)) {
std::cerr << "Failed to create directory " << path << ".\n";
}
return(0);
}

运行它,我得到诸如 :@K%C5?:%C0)%E0?:%C0%E9% 之类的目录93?

我在使 Boost 正确链接时遇到了一些麻烦,但上面的程序现在可以编译并运行。如果有必要,一些信息:
-- 我使用的是 Mac (OSX 10.9.4)
-- GCC 和 Boost 都与 MacPorts 一起安装(使用 +gcc49 选项进行 boost )
-- GCC 版本 4.9.2_1
-- Boost版本1.57.0_1
-- 我的 Makefile 看起来像

CC = /opt/local/bin/g++
FLAGS = -I/opt/local/include -L/opt/local/lib -lboost_system-mt -lboost_filesystem-mt
driver : driver.cpp
$(CC) $(FLAGS) -o driver driver.cpp

欢迎提出任何建议;自从我经常使用 C++ 以来已经有一段时间了,而且我对 Boost 不是很有经验。

最佳答案

不顾一切,确保将文件保存为 ASCII、latin1 或 UTF8。

否则,您可能会因不兼容的库版本而产生未定义的行为。

您可以使用 DYLD_LIBRARY_PATH 来获取用于 boost 的首选库(您链接的库)。另见 Is it OK to use DYLD_LIBRARY_PATH on Mac OS X? And, what's the dynamic library search algorithm with it?

关于c++ - Boost.Filesystem create_directories 破坏目录名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29423879/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com