Итак, я запускаю свое приложение. Мне нужно, чтобы он знал, где его исполняемый файл. Как найти путь к нему с помощью файловой системы boost?
Boost:: file_system, как узнать, в каком каталоге находится ваш исполняемый файл?
Ответ 1
Если вы имеете в виду из исполняемого файла, который вы используете, вы можете использовать boost:: filesystem:: current_path()
Ответ 2
boost::filesystem::system_complete(argv[0]);
например.
[[email protected] Debug]$ ./boostfstest
/home/davka/workspaces/v1.1-POC/boostfstest/Debug/boostfstest
Обратите внимание, что это дает вам полный путь , включая имя исполняемого файла.
Ответ 3
Вы не можете сделать это надежно с boost:: filesystem.
Однако, если вы находитесь в окнах, вы можете вызвать GetModuleFileName
, чтобы получить полный путь к исполняемому файлу, а затем использовать boost::filesystem
для получения каталога. (см. parent_path)
Ответ 4
Как обсуждалось более подробно здесь, самый надежный способ сделать это не через boost:: filesystem. Вместо этого ваша реализация должна учитывать операционную систему, на которой выполняется приложение.
Однако для быстрой реализации без проблем переносимости вы можете проверить, возвращает ли ваш argv [0] полный путь к исполняемому файлу. Если это положительно, вы можете сделать что-то вроде:
namespace fs=boost::filesystem;
fs::path selfpath=argv[0];
selfpath=selfpath.remove_filename();