0

この問題に遭遇したのはこれが初めてなので、修正方法がわかりません。編集:気にしないでください。コンストラクターでの 1 つのエラーによるオフのように見えて、何らかの理由でこれが発生しました


#include <iostream>
#include <fstream>
#include "graphm.h"

using namespace std;

int main() {

   ifstream infile1("data31.txt");

   for(;;){
      GraphM G;
      G.buildGraph(infile1);
      if (infile1.eof()) 
         break;
}

void GraphM::buildGraph(ifstream& infile){
    int i = 0;
    infile >> i;     //it crashes here
}

私のテキストファイルはたったの1行です: 5

4

3 に答える 3

4

この問題は、ファイルが開いていないことに関連している可能性があります。ファイルが正常に開かれたかどうかを常に確認する必要があります。

ifstream infile1("data31.txt");

if ( !infile1 )
{
    // Failed to open data31.txt
    return -1;
}

または、オーバーロードの代わりに明示的な関数を使用できますoperator!

if ( infile1.fail() ) 
{
    return -1;
}
于 2012-10-18T08:09:12.893 に答える
1

あなたが得るエラーは何ですか?infile.is_open() 関数をチェックして、ファイルが開いていることを確認します。サンプルコードは次の場所にあります。

http://www.cplusplus.com/reference/iostream/ifstream/is_open/

このスレッドも確認できます。

C++ ifstream 抽出 operator>> を使用して、フォーマットされたデータをファイルから読み取る

ifstream を使用するための便利な手順があります。

于 2012-10-18T08:14:13.193 に答える
0

コードで考えられる問題:

1. Unopenable file/unopened file
2. Unopenable file/unopened file
3. Unopenable file/unopened file
4. Unopenable file/unopened file

この問題を回避するにはどうすればよいですか? @MaximSkurydin のコードに従ってください。

于 2012-10-18T08:14:01.507 に答える