C++ [Windows] Path к папке, где исполняемый файл расположен [копирует]

Этот вопрос уже имеет ответ здесь:

Я должен получить доступ к некоторым файлам с fstream в моем приложении C++ в Windows. Те файлы все расположены в подпапках папки, где мой EXE-файл расположен.

  • Что является самым легким и более важным: самый безопасный способ получить путь к папке текущего исполняемого файла?
32
задан sean e 15 April 2010 в 18:07
поделиться

2 ответа

Используйте GetModuleHandle и GetModuleFileName , чтобы узнать, откуда запущен исполняемый файл.

HMODULE hModule = GetModuleHandleW(NULL);
WCHAR path[MAX_PATH];
GetModuleFileNameW(hModule, path, MAX_PATH);

Затем удалите имя exe из пути.

47
ответ дан 27 November 2019 в 20:21
поделиться

По умолчанию каталог, из которого запускается исполняемый файл, должен быть начальным местоположением. Таким образом, открытие файла в подпапке должно быть таким же простым, как

fstream infile; 
infile.open(".\\subfolder\\filename.ext");

из вашей программы.

Однако нет реального способа ГАРАНТИРОВАТЬ, что это всегда будет работать, если только вы не используете фреймворк, который включает в себя необходимые функции (я бы посмотрел на boost), или напрямую не используете Windows API, например GetModuleFileName (как предложил Шон)

1
ответ дан 27 November 2019 в 20:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: