有谁知道为什么fstream在这条线上崩溃了?

时间:2012-10-18 08:02:27

标签: c++ fstream ifstream

这是我第一次遇到这个问题所以我不知道如何修复它。 编辑:没关系。看起来像我的构造函数中的一个错误导致这种情况以某种方式发生


#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
}

我的文字文件只有一行: 5

3 个答案:

答案 0 :(得分:4)

问题可能与文件未打开有关。您应该始终检查文件是否已成功打开:

ifstream infile1("data31.txt");

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

或者您可以使用显式函数而不是重载operator!

if ( infile1.fail() ) 
{
    return -1;
}

答案 1 :(得分:1)

你得到的错误是什么?通过检查infile.is_open()函数确保文件已打开。你可以在这里找到示例代码:

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

您也可以查看此主题:

Using C++ ifstream extraction operator>> to read formatted data from a file

它有一个使用ifstream的有用说明。

答案 2 :(得分:0)

代码可能出现的问题:

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

如何解决这个问题?关注@MaximSkurydin的代码。