Метод Open открывает файлы только с полным путем C ++ - PullRequest
2 голосов
/ 25 января 2011

Файл открывается, если я напишу полный путь (full-path / roots.txt). Файл не открывается, если я пишу только имя файла (roots.txt)

И все же root.txt находится в той же папке, что и main.cpp. Есть ли какие-либо настройки, которые я должен проверить на XCode?

Вот код:

    string line;
ifstream infile;
infile.clear();
// infile.open("roots.txt");
infile.open("/Users/programming/C++/roots/roots.txt");
if (infile.fail()) cout << "could not open the file: " << strerror(errno);
getline(infile, line);
cout << line;

Ответы [ 4 ]

9 голосов
/ 22 июля 2013

По умолчанию рабочий каталог XCode похож на ~/Library/Developer/Xcode/DerivedData/project-/Build/Products/Debug. Так что, если вы пытаетесь использовать относительный путь относительно вашего каталога проекта или любого другого, вы должны вручную настроить свой рабочий каталог в XCode.

Это можно сделать следующим образом: Продукт -> Схема -> Редактировать схему -> вкладка параметров , поставьте флажок в поле Использовать пользовательский рабочий каталог и укажите свой путь.

4 голосов
/ 25 января 2011

Если это работает, когда вы пытаетесь открыть файл с абсолютным путем, и не удается просто с именем файла, ваш относительный путь, вероятно, неверный.Убедитесь, что roots.txt находится в текущем рабочем каталоге.Посмотрите на функцию getcwd, объявленную в unistd.h.

4 голосов
/ 25 января 2011

Чтобы изменить рабочий каталог при запуске изнутри XCode: выберите «Редактировать активный исполняемый файл» в меню «Проект».

Вы можете настроить параметры рабочего каталога в нижней части раздела «Общие».

2 голосов
/ 25 января 2011

Предполагая, что вы запускаете файл из XCode, маловероятно, что рабочий каталог будет тем же каталогом, где находится ваш файл .cpp. Проверьте, какой у вас текущий рабочий каталог. (вы должны быть в состоянии получить его, используя getcwd вызов)

...