Утверждение "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. В этом случае ваш файл недействителен.