Boost:: относительный путь файловой системы и текущий каталог?
Как я могу использовать boost::filesystem::path
для указания относительного пути в Windows? Эта попытка не выполняется:
boost:filesystem::path full_path("../asset/toolbox"); // invalid path or directory.
Возможно, чтобы помочь мне отлаживать, как получить текущий рабочий каталог с boost:: filesystem?
Ответы
Ответ 1
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>
.
Ответ 2
Попробуйте функцию system_complete
.
namespace fs = boost::filesystem;
fs::path full_path = fs::system_complete("../asset/toolbox");
Это точно отражает то, как сама ОС будет разрешать относительные пути.
Ответ 3
Если вы хотите перейти на предыдущий каталог, попробуйте что-то вроде этого:
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;
Ответ 4
Когда вы вводите "../your/path", вы не указываете unix-подобный путь? Я думаю, что вы должны сделать, чтобы получить системные конкретные пути:
boost:filesystem::path full_path(".." / "asset" / "toolbox");
В этом случае '/' представляет собой конкатенирование путей в системе определенным образом и не является частью указанного вами пути.