Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 文件系统相对路径和当前目录?_C++_Boost_Filesystems - Fatal编程技术网

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();