有人知道为什么Fstream在这条线上崩溃吗?

Does anyone know why fstream crashes at this line?

本文关键字:崩溃 为什么 Fstream      更新时间:2023-10-16

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


#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

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

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

或者您可以使用显式功能而不是超载operator!

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

您遇到的错误是什么?通过检查infile.is_open()函数,请确保文件打开。您可以在此处找到示例代码:

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

您也可以检查此线程:

使用C ifstream提取操作员&gt;&gt;从文件读取格式的数据

它具有用于使用ifstream的有用说明。

代码可能的问题:

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

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