打开文件时,ifstream会崩溃程序

时间:2012-06-14 18:58:38

标签: c++ file io fstream ifstream

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

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

1 个答案:

答案 0 :(得分:2)

您已创建指向ifstream对象的指针,但您从未为其指定ifstream。要解决这个问题,请考虑堆栈分配:

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

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

希望这有帮助!