Windowsでboost::filesystem::path
を使用して相対パスを指定するにはどうすればよいですか?この試行は失敗します。
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;
アクセスするために current_path
追加する必要がある#include <boost/filesystem.hpp>
。
system_complete
関数。
namespace fs = boost::filesystem;
fs::path full_path = fs::system_complete("../asset/toolbox");
これは、OS自体が相対パスを解決する方法を正確に模倣します。
前のディレクトリに変更する場合は、次のようなものを試してください。
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;
「../your/path」と入力すると、Unixのようなパスが指定されていませんか?システム固有のパスを取得するには、次のようにする必要があります。
boost:filesystem::path full_path(".." / "asset" / "toolbox");
この場合、「/」はシステム固有の方法でパスを連結する演算子であり、指定したパスの一部ではありません。