boost :: filesystem относительный путь и текущий каталог? - PullRequest
32 голосов
/ 14 октября 2010

Как я могу использовать boost::filesystem::path, чтобы указать относительный путь в Windows? Эта попытка не удалась:

boost:filesystem::path full_path("../asset/toolbox"); // invalid path or directory.

Может быть, чтобы помочь мне отладить, как получить текущий рабочий каталог с boost :: filesystem?

Ответы [ 4 ]

60 голосов
/ 15 октября 2010
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>.

15 голосов
/ 26 декабря 2014

Попробуйте функцию system_complete.

namespace fs = boost::filesystem;

fs::path full_path = fs::system_complete("../asset/toolbox");

Это точно имитирует, как сама ОС будет разрешать относительные пути.

2 голосов
/ 05 марта 2014

Если вы хотите перейти в предыдущий каталог, попробуйте что-то вроде этого:

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;
0 голосов
/ 15 октября 2010

Когда вы набираете "../your/path", вы не указываете unix-подобный путь?Я думаю, что вы должны сделать, чтобы получить системные пути:

boost:filesystem::path full_path(".." / "asset" / "toolbox");

В этом случае '/' является оператором, объединяющим пути системным образом и не являющимся частью указанного вами пути.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...