C++ 文件系统相对路径和当前目录?
如何使用C++ 文件系统相对路径和当前目录?,c++,boost,filesystems,C++,Boost,Filesystems,如何使用boost::filesystem::path在Windows上指定相对路径?此尝试失败: boost:filesystem::path full_path("../asset/toolbox"); // invalid path or directory. 也许是为了帮助我调试,如何使用boost::filesystem获取当前的工作目录 getcwd = boost::filesystem::path full_path(boost::filesystem::current_pat
boost::filesystem::path
在Windows上指定相对路径?此尝试失败:
boost:filesystem::path full_path("../asset/toolbox"); // invalid path or directory.
也许是为了帮助我调试,如何使用boost::filesystem获取当前的工作目录
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;
boost::filesystem::path full_path(boost::filesystem::current_path());
std::cout当您键入“./your/path”时,您不是在指定一个类似unix的路径吗?我认为您应该做的是获得系统特定路径:
boost:filesystem::path full_path(".." / "asset" / "toolbox");
在这种情况下,“/”是一个以系统特定方式连接路径的运算符,它不是您指定的路径的一部分。如果您想更改到上一个目录,请尝试以下操作:
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;
boost::filesystem::path full_path(boost::filesystem::current_path());
std::cout尝试该函数
namespace fs = boost::filesystem;
fs::path full_path = fs::system_complete("../asset/toolbox");
这完全模拟了操作系统本身解析相对路径的方式。为了澄清,我解决了我的问题。上述方法对于相对路径访问是正确的。然而,在MSV中,当前的工作目录并不是我所期望的。hmuelner的currentpath()有帮助。不是真的。。。您正在以内部boost::filesystem格式指定一个路径,这有点像unix。不过,我也更喜欢运算符符号。您必须执行一些类似于path full\u path=path(“…”/“资产”/“工具箱”的操作;在windows中,您也可以使用/
作为目录分隔符。必须是boost:filesystem::path full\u path(boost:filesystem::path(“…”)/“资产”/“工具箱”)代码>这里似乎有一个缺陷,这不是一个有效的C++表达式,在BooS::Fiels::PATH和FulyOpTew之间是否缺少什么?这不是一个有效的C++表达式,而是一个简短的答案符号。在现代C++中,可以编写:AutoCWD= Booo::文件系统::CurrnEnPurthor();