Подтвердить что ты не робот

Новый для Xcode не может открывать файлы в С++?

Я использую окна в классе, который я принимал, но я пытаюсь запустить базовый код, чтобы выяснить, как открывать/закрывать/вводить/выводить из файлов на Xcode и код, который я обычно использую на визуальных Студии не работают, почему? спасибо!

#include <string>
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    ifstream fin;
    ofstream fout;
    string input;

    fin.open("inputFile.txt");
    if(fin.fail())
        cout << "File failed to open." << endl;
    fin >> input;

    fout.open("outputFile.txt");

    fout << input;


}
4b9b3361

Ответ 1

Поместите ваши .txt файлы в тот же каталог, где находится ваш файл main.cpp(или где угодно).

В Xcode перейдите в Product > Scheme > Edit Scheme > Run test (справа) > Параметры (средний верх)

Вниз в разделе "Параметры" выберите "Использовать настраиваемый рабочий каталог" и установите его в каталог, в котором находятся файлы .txt.

Чтобы работать с файлами, вам нужно будет указать только имена файлов, например. in_file.open( "inputFile.txt" ); путь не требуется.

Ответ 2

Здесь совершенно другой подход: Имейте Xcode скопировать входной файл для вас.

  • Выберите проект в Xcode
  • Выбор фаз сборки
  • Нажмите кнопку "+", чтобы создать новую фазу сборки

Steps 1-3

  • Выберите Новая фаза сборки файлов копий

Step 4

  • Выберите Каталог продуктов
  • Нажмите кнопку "+", чтобы добавить файл

Steps 5-6

  • Нажмите Добавить другое

Step 7

  • Выберите свой входной файл и нажмите Открыть

Step 8

  • Установите флажок Копировать элементы... и нажмите "Готово"

Step 9

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

Ответ 3

Ответы действительно не объясняют проблему, поэтому я подумал, что сделаю это.

Когда вы передаете относительный путь, такой как "inputFile.txt", в файл API, он обрабатывается как относительно рабочего каталога при выполнении программы. Это то же самое, что и "рабочий каталог" при использовании cmd.exe или Terminal.app или командной строки в целом. Команда Unix pwd ( "print working directory" ) отображает текущий рабочий каталог. В Windows, выполняющей команду cd без аргументов, выполняется одна и та же функция. (В Unix под управлением cd без аргументов будет изменен рабочий каталог в домашнем каталоге пользователя.)

Когда вы запускаете программу из командной строки, оболочка командной строки устанавливает рабочий каталог программы. Когда вы запускаете программу из среды IDE, среда IDE устанавливает рабочий каталог. Поскольку, в отличие от командной строки, нет очевидного ответа на то, что IDE должна установить как рабочий каталог, Visual Studio и Xcode по умолчанию устанавливают рабочий каталог в разные местоположения: Visual Studio устанавливает рабочий каталог в $(ProjectDir), каталог содержащий файл проекта Visual Studio; Xcode устанавливает рабочий каталог в каталог продуктов сборки, т.е. Место, в которое был записан исполняемый файл.

Некоторые возможные решения вашей проблемы:

  • Не используйте относительный путь и, следовательно, не зависеть от рабочего каталога. Это не очень помогает сделать программу более переносимой, поскольку абсолютные пути также будут отличаться между платформами, поэтому вам все равно придется "настраивать" программу для каждой платформы. Фактически использование абсолютного пути хуже, потому что это означает, что ваш исходный код должен отличаться, тогда как было бы лучше сохранить эту разницу, ограниченную каждой конфигурацией сборки платформы.

  • Настройте среду IDE, чтобы использовать желаемый рабочий каталог. Visual Studio можно настроить, щелкнув правой кнопкой мыши проект, выбрав "Свойства конфигурации" > "Отладка" > "Рабочий каталог" и установив рабочий каталог на нужный путь (возможно, используя переменные сборки Visual Studio).

    nepete answer описывает, как настроить работу, непосредственно установленную Xcode.

  • Настройте процесс сборки IDE, чтобы скопировать файлы данных в соответствующее место. В Visual Studio вы сделаете это в проекте С++, настроив проект Properties > Configuration Properties > Build Events.

    Ответ SSteve описывает, как настроить дополнительные шаги сборки в Xcode.

Ответ 4

Как было предложено nepete, отредактируйте схему, но используйте PROJECT_DIR как пользовательский рабочий каталог. Помогает перемещать проект или работать в двух разных средах (например, дома и в офисе).

BTW. $PROJECT_DIR является одной из переменных окружения Xcode, а также помогает передавать имена файлов в качестве аргументов командной строки в программы (настраиваемые в разделе "Аргументы" в схеме).

Ответ 5

Я предполагаю, что у вас есть файл inputFile.txt в папке, содержащей ваш исходный код. Это не сработает. Вам нужно поместить его в папку, содержащую сгенерированный исполняемый файл. Чтобы найти эту папку, щелкните правой кнопкой мыши ваше приложение под Продукты и выберите Показать в Finder.

enter image description here

Это изображение показывает, как выглядит программа командной строки. Он также показывает окно Finder, которое было открыто. Как вы можете видеть, это другая папка, кроме той, которая содержит исходный код.

Command Line version