簡體   English   中英

斷言'in'失敗 - c ++

[英]Assertion `in' failed - 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;

如果表達式求值為false,則assert()將失敗。

assert(in)

失敗,因為in(輸入文件)的計算結果為false。 您的代碼無法打開名為“fraction.data”的文件。 如果in是有效的輸入文件流,則assert(in)將通過,並且您將繼續處理您的業務。

簡答 - >“找不到文件”或“無法在此處創建文件”。

assert是一個運行時檢查,用於驗證其參數是否為true。 在這種情況下,您的文件無效。

所以我終於明白了。 我只需要將“fraction.data”文件移動到主項目目錄。 以前,我把它放在目錄中的源文件夾中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM