【问题标题】:Ifstream crashes program when opening fileIfstream在打开文件时崩溃程序
【发布时间】:2012-06-14 18:58:37
【问题描述】:

我已经缩小了我的代码范围,我找到了问题的根源,就是我打开一个文件的时候。 该文件确实存在,并且在编译时我没有收到任何警告或错误。

int main(int argc, const char* args[]) 
{
    cout << "Wellcome" << endl;
    cout << args[1];
    ifstream exists(args[1]);
    if(!exists)
    {
        printf("FILE NOT FOUND");
        return 1;
    }
    exists.close();
    ifstream* in;
    in->open(args[1],ios::binary|ios::in);
    //do stuff
    in->close();
    return 0;
}

【问题讨论】:

  • 绝对没有必要使用指向ifstream 的指针。让类通过自动存储持续时间分配它来完成它的工作并阅读RAII

标签: c++ file io fstream ifstream


【解决方案1】:

您已经创建了一个指向ifstream 对象的指针,但您从未分配一个ifstream 供它指向。要解决此问题,请考虑仅对其进行堆栈分配:

ifstream in;
in.open(args[1],ios::binary|ios::in);
//do stuff
in.close();

一般来说,您通常不需要动态分配对象,除非您希望它们比创建它们的函数寿命更长。

希望这会有所帮助!

【讨论】:

  • 嗯,这是有道理的 :) 它有效。我不知道为什么我没有想到那个 xD
猜你喜欢
  • 2012-05-03
  • 1970-01-01
  • 1970-01-01
  • 2015-08-30
  • 1970-01-01
  • 2022-11-15
  • 2019-01-25
  • 2011-09-06
  • 1970-01-01
相关资源
最近更新 更多