具体问题描述:第一个fstream对象打开文件后,在同一级或本级调用的其他函数中再次使用fstream对象打开文件,尤其在使用ios::app追加方式打开时,此时使用is_open()检验可以打开,但第二个对象无法对文件进行写入。
由于前一个对象的函数没有结束,对象还未被销毁,此时如果想在别的函数中使用该文件,需要首先将原本打开此文件的对象进行close(),然后再在下级函数中打开。返回后再次open()以接着使用此函数对象。
此类问题并不一定会出现,受系统环境和文件属性等影响,为提高鲁棒性,最好保持close与clear之后再次使用的习惯。