断言"输入"失败 - C++

Assertion `in' failed - c++

本文关键字:C++ 输入 断言 失败      更新时间:2023-10-16

下面是一个分数类的客户端程序的一部分。我写了这个类,现在正在用给定的客户端程序测试它。当我尝试运行它时,我得到这个错误:

断言'in'失败。

代码:

bool eof(ifstream& in);
cout << "n----- Now reading Fractions from filen";
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语句

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

如果表达式的计算结果为false, assert()失败。

assert(in)

失败,因为in(输入文件)的计算结果为false。您的代码无法打开名为"fraction.data"的文件。如果in是一个有效的输入文件流,assert(in)将通过,您将继续您的业务。

简短回答-> "File not found"或" cannot create a File here".

assert是一个运行时检查,用于验证其参数是否为真。在这种情况下,您的文件无效。

我终于明白了。我只需要移动分数。"Data"文件保存到主项目目录。以前,我把它放在目录的源文件夹中。