Утверждение "in" не удалось - c ++ - PullRequest
0 голосов
/ 06 октября 2011

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

Утверждение '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 ]

2 голосов
/ 06 октября 2011

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

assert(in)

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

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

0 голосов
/ 06 октября 2011

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

0 голосов
/ 06 октября 2011

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

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