代码之家  ›  专栏  ›  技术社区  ›  Konrad

fstream文件I/O问题-何时关闭文件流

  •  1
  • Konrad  · 技术社区  · 14 年前

    如果初始打开失败,我正在尝试解决是否需要对fstream对象调用close。

    std::fstream strm;
    strm.open( "filename" );
    
    if( ! strm.fail() )
    {
        // Do something
    
        strm.close();  // [1]
    }
    
    strm.close();  // [2]
    

    应该在哪里 关闭 在这里调用-应该始终调用[2]还是仅当open成功时才调用[1]?

    我可能在这里做得太过火了,但从Windows API的角度来看,我通常都是这样做的。 闭合手柄(…); 在我的脑海中嵌入:—)

    2 回复  |  直到 14 年前
        1
  •  3
  •   anon    14 年前

    流将由fstream的析构函数自动关闭-不需要显式关闭它,除非程序逻辑要求它,例如,如果要重新打开它。但是,关闭未打开的流不会导致任何问题。

        2
  •  0
  •   Jim Tshr    14 年前

    不,如果流没有打开,就没有要关闭的内容。