boost :: filesystem相对路径和当前目录?

时间:2010-10-14 17:33:47

标签: c++ boost filesystems

如何使用boost::filesystem::path在Windows上指定相对路径?这种尝试失败了:

boost:filesystem::path full_path("../asset/toolbox"); // invalid path or directory.

也许是为了帮助我调试,如何使用boost :: filesystem获取当前的工作目录?

4 个答案:

答案 0 :(得分:60)

getcwd = boost::filesystem::path full_path(boost::filesystem::current_path());

示例:

boost::filesystem::path full_path(boost::filesystem::current_path());
std::cout << "Current path is : " << full_path << std::endl;

要访问current_path,需要添加#include <boost/filesystem.hpp>

答案 1 :(得分:15)

尝试system_complete功能。

namespace fs = boost::filesystem;

fs::path full_path = fs::system_complete("../asset/toolbox");

这模仿了操作系统本身如何解析相对路径。

答案 2 :(得分:2)

如果您想要更改为上一个目录,请尝试以下操作:

boost::filesystem::path full_path( boost::filesystem::current_path() );
std::cout << "Current path is : " << full_path << std::endl;

//system("cd ../"); // change to previous dir -- this is NOT working
chdir("../"); // change to previous dir -- this IS working

boost::filesystem::path new_full_path( boost::filesystem::current_path() );
std::cout << "Current path is : " << new_full_path << std::endl;

答案 3 :(得分:0)

当您键入“../your/path”时,您是不是指定了类似unix的路径?我认为你应该做的是获得系统特定的路径:

boost:filesystem::path full_path(".." / "asset" / "toolbox");

在这种情况下,'/'是以系统特定方式连接路径的运算符,不属于您指定的路径。