0

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


#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 提取运算符>> 从文件中读取格式化数据

它有使用 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 回答