fstream对象重复使用需注意clear的调用,否则会出错
来源:互联网 发布:linux 查询 当前时间 编辑:程序博客网 时间:2024/05/17 23:03
ifstream对象如果重复使用,须注意在使用之前先调用clear函数,否则会出错
表现为:
代码一:
====================================================
ifstream fin("x.txt");
if(fin.fail())
{
cout << " failed to open x.txt" << endl;
}
fin.close();
fin.open("y.txt");
if(fin.fail())
{
cout << " failed to open y.txt" << endl;
//
goto EXIT;
}
cout <<" succeed"<< endl;
EXIT:
fin.close();
============================================
输出: failed to open y.txt
============================================
代码二:
============================================
ifstream fin("y.txt");
if(fin.fail())
{
cout << " failed to open y.txt" << endl;
}
fin.close();
// fin.clear(); //注意添加clear
fin.open("x.txt");
if(fin.fail())
{
cout << " failed to open x.txt" << endl;
//
goto EXIT;
}
cout <<" succeed"<< endl;
EXIT:
fin.close();
=======================================
输出: failed to open y.txt
failed to open x.txt
=======================================
代码二打开x.txt失败的
原因: 跟踪代码实现发现,在open成功后不会对 fstream中状态进行操作,而open失败的话会设置_MyState为failbit,并且在close操作时如果本身是空文件,也会设置state为failbit,这样造成一次失败之后的其他很多操作都是失败的,因为很多fstream操作会先判断state;
而clear函数是将fstream状态重置为goodbit
所以代码二在添加了clear代码后正常
TODO:
STL的文件流类挺复杂的——》《源码分析》TO SEE
- fstream对象重复使用需注意clear的调用,否则会出错
- fstream对象重复使用时注意clear()的调用,否则会造成打开第二个文件失败
- fstream 对象多次使用时注意clear
- vector中存储的对象在clear时,会调用对象的析构函数
- InputStream对象的重复使用
- oracle删除主键后要注意也要删除对应的index,否则还会影响主外关系并出错
- 关于重复使用InputStream对象的
- 关于Intent的传对象值注意,父类实现 Serializable接口, 否则传子类对象,会出现传值丢失!
- zend framework中Action名的最后一位不能为数字,否则会出错
- knockoutjs的foreach绑定应首先判断数组是否为空,否则会出错
- 杭电2008注意是实数,continue的应用必须的加上,否则会重复加
- SeeBar自定义样式需要注意的地方,否则会出现闪烁的效果
- 使用Mybatis时请注意这两个参数,否则会让你的数据库连接爆掉
- 通过url传参时要注意不能有空格,否则会发生意想不到的问题
- 关于inputStream 对象重复使用的解决方法
- NSArray arrayWithObjects 末尾要nil否则会出错。
- //这里有“”,格式标准,否则有时会出错;
- string 转成CString 特别注意,一定要加上c_str(),否则出错
- 在这个学习天地,愿大家得到新的开始
- 查表法计算crc的python演示程序
- 关于电子商务的一些描述
- ubnutu 8.04 升级失败
- 2007-12-09 | 写给我的新博客
- fstream对象重复使用需注意clear的调用,否则会出错
- 2007-12-16 | 提醒自己
- 2007-12-22 | 考完六级啦
- 2008-01-02 | 看一涟幽梦有感
- 2008-03-09 | 朋友的大房子
- 2008-03-16 | 失败的半年
- 2008-03-23 | 有些东西最好不要看
- 2008-03-24 | 告诉自己开心些
- 2008-03-27 | 记住