如何使用boost::filesystem::path
在Windows上指定相对路径?这种尝试失败了:
boost:filesystem::path full_path("../asset/toolbox"); // invalid path or directory.
也许是为了帮助我调试,如何使用boost :: filesystem获取当前的工作目录?
答案 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");
在这种情况下,'/'是以系统特定方式连接路径的运算符,不属于您指定的路径。