Утверждение "in" не удалось - C++

Следующее является частью клиентской программы для класса дроби. Я написал класс и сейчас тестирую его с помощью данной клиентской программы. Когда я пытаюсь запустить его, я получаю эту ошибку:

Утверждение 'in' не удалось.

Код:

bool eof(ifstream& in);

cout << "\n----- Now reading Fractions from file\n";
ifstream in("fraction.data");
assert(in);
while (!eof(in)) {
    Fraction f;
    if (in.peek() == '#') {
        in.ignore(128, '\n');                    //skip this line, it's a comment
    } else {
        in >> f;
        cout << "Read fraction = " << f << endl;
    }

Как относительный новичок в C++, я не совсем понимаю, что должна делать эта часть кода:

ifstream in("fraction.data");
assert(in);

И когда я пытаюсь отладить и дохожу до этого, он говорит:

Источник недоступен для "__kernel_vsyscall() at 0x12e416"

Так что, да, в заключение я довольно не понимаю, почему это происходит:P

РЕДАКТИРОВАТЬ: Вот включите заявления

#include <iostream>
#include "fraction.h"
#include <fstream>
#include <cassert>
using namespace std;

3 ответа

Решение

Итак, я наконец-то понял. Мне просто нужно переместить мой файл "action.data"в основной каталог проекта. Раньше у меня это было в исходной папке в каталоге.

Assert() не выполняется, если выражение оценивается как ложное.

assert(in)

терпит неудачу, потому что в (входной файл) оценивается как ложное. Ваш код не может открыть файл с именем "фракция.данных". Если бы in был допустимым потоком входного файла, assert (in) прошел бы, и вы продолжили бы свое дело.

Краткий ответ -> "Файл не найден" или "Не удается создать файл здесь".

assert это проверка во время выполнения, которая проверяет, что ее аргумент равен true. В этом случае ваш файл недействителен.

Другие вопросы по тегам