XCode, стандартный C ++ и обработка файлов ifstream - PullRequest
1 голос
/ 20 октября 2010

Недавно я выяснил, что Xcode можно использовать для написания обычных программ на C ++.

Моя проблема связана со следующим кодом:

#include <iostream>
#include <fstream>
using namespace std;
int main (int argc, char *argv[]) {
    char operation='0';
    int operand=0;
    //open file for reading  
    ifstream ifile;
    ifile.open (argv[1]);
    if(!ifile.is_open()){
            cout<<"Invalid file\n";
            exit(1);
    }
    while(ifile.good())
    {
            ifile>>operation;

            if(operation=='I') {  
                    ifile>>operand;
                    cout<<"Inserting :"<<operand<<endl;
                                                    }
            else
            if(operation=='D') { cout<<"Deleting  "<<endl;
                                                    }
    }
    return 0;
}

Когда вводится следующее,

I 4
I 8
I 10
I 9
*

Когда я компилирую и запускаю в Xcode, я получаю следующее

Loading program into debugger…
Program loaded.
run
[Switching to process 58116]
Inserting :0
Running…

Debugger stopped.
Program exited with status value:0.

Я установил имя файла в качестве аргумента в настройках проекта.

Однако,в Терминале я получаю

Inserting :4
Inserting :8
Inserting :10
Inserting :9

Пожалуйста, помогите мне понять, почему это происходит.

Ответы [ 4 ]

0 голосов
/ 15 апреля 2012

Я не понял, что это было, но переустановка XCode решила проблему.

0 голосов
/ 20 октября 2010

Сначала как стандартное правило при отладке. Устраните все ненужные сложности

Я подозреваю, что ваша проблема в том, что вы неправильно указали argv[1] в параметрах отладки, но я могу ошибаться.

Сначала попробуйтеуказав имя файла вручную, а не принимая его из argv [1].(Относительный путь должен быть из вашего каталога 'project / build / Debug')

Вам нужно проверить ifile.good () после того, как вы попытаетесь прочитать байт, только тогда вы бызнать, если EOF был получен при чтении.

Наконец, всегда проверяйте argc при чтении argv [] .

0 голосов
/ 20 октября 2010

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

К сожалению, в XCode есть несколько избыточных настроек проекта, и вам нужно открыть правильное окно.

0 голосов
/ 20 октября 2010

Возможно, вам необходимо указать абсолютный путь в аргументе вашего проекта.

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