Некорректно читается .dat файл в с ++ - PullRequest
0 голосов
/ 12 мая 2018

Я новичок в c ++ и попал в модуль о файловом вводе / выводе.Я скопировал пример из моего учебника дословно, и он, кажется, не работает должным образом, и я не уверен, в чем может быть проблема;Нет ошибок, которые выводятся из программы.

Я пробовал разные варианты и остановился на этом примере:

#include <fstream>
#include <iostream>

using namespace std;

string f = "marks.dat"; ifstream file;


int main() {
    int first = 0;
    file.open(f);
    if(file.is_open()){
        file >> first;
        cout << first;
    } else {
    cout << "file has failed to open";
    }

    return 0;
}

Файл .dat находится в папке Assignment3.1, из которойФайл .cpp скомпилирован.Проверка для file.is_open () ложна, и я не уверен, в чем проблема.

Вывод моего кода выглядит следующим образом: Вывод

РЕДАКТИРОВАТЬ: я включил объявление для первого = 0;и включил файл .is_open ();

РЕДАКТИРОВАТЬ: pwd для папки: /Users/stjohn/Documents/cpp/Assignment3.1

Ответы [ 3 ]

0 голосов
/ 12 мая 2018

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

#include <fstream>
#include <iostream>

using namespace std;

string f = "/Users/stjohn/Documents/cpp/Assignment3.1/marks.dat"; ifstream file;


int main() {
    int first = 0;
    file.open(f);
    if(file.is_open()){
        file >> first;
        cout << first;
    } else {
    cout << "file has failed to open";
    }

    return 0;
}
0 голосов
/ 15 мая 2018

Исходя из скриншотов, я предполагаю, что вы используете Code :: Blocks для MacOS. Установите рабочий каталог в Project> Properties> Build Target> Execution Working Directory.

0 голосов
/ 12 мая 2018

Я думаю, что файл не читается правильно. Сначала вы получаете случайное число из переменной. Попробуйте сначала инициализировать до нуля, а затем посмотреть результат. Вы должны понимать, что происходит.

первый = 0;

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