Файловый ввод / вывод из текущей позиции Windows C ++ - PullRequest
3 голосов
/ 12 июня 2011

Я еще не нашел однозначного ответа по этому поводу.Я пытаюсь получить доступ к файлам в подпапках из моего .EXE.Когда я уже спрашивал, люди говорят мне использовать абсолютное местоположение, то есть «c: / game / info /», если я хочу получить доступ к чему-либо в / info /

Но для меня или кого-либо совершенно неразумноПредположим, что кто-то собирается использовать свою программу из той же директории.Что если у пользователя есть только диск D?Такого рода вещи.

Итак, мой вопрос: как я могу получить доступ к файлу в подкаталоге из моего исполняемого файла, не полагаясь на весь путь?

Ответы [ 4 ]

8 голосов
/ 12 июня 2011

В вашем заголовке написано "Windows", поэтому я дам специфический для WinAPI ответ.

В Windows вы можете найти каталог вашего приложения с GetModuleFileName(NULL, ...) и PathRemoveFileSpec.Затем PathAppend сделает полный путь к вашим файлам данных.

Или вы можете сохранить данные внутри вашего файла .exe как ресурсы Win32 , чтобы они никогдаотделитесь.


Обратите внимание, что этот подход обычно работает только для доступа к файлам данных только для чтения.Если вы попытаетесь записать файлы в каталог приложения, вы можете быть заблокированы списками ACL (в зависимости от места установки и локальных настроек безопасности компьютера).

4 голосов
/ 12 июня 2011

Использование GetModuleFileName (Извлекает полный путь к файлу, содержащему указанный модуль. Модуль должен быть загружен текущим процессом.)

char strExePath [MAX_PATH];
GetModuleFileName (NULL, strExePath, MAX_PATH);

Затем вам нужно будет извлечь путь к папке (кто-то уже писал о том, как это сделать) и объединить ваш путь.

0 голосов
/ 12 июня 2011

если вы используете:

#include <fstream>

ifstream stream("file");

, это будет работать."file" - это файл в каталоге с вашим exe.Конечно, если вы хотите перейти вверх или вниз в иерархии папок, используйте ".. \ file" или "folder \ file"

0 голосов
/ 12 июня 2011

Создание или использование программы установки, которая спрашивает пользователя, где установить исполняемый файл, и записывает этот путь в реестр в известном месте для дальнейшего использования.

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