免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3457 | 回复: 5
打印 上一主题 下一主题

请教:fstream中close()的疑问 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-06-10 00:55 |只看该作者 |倒序浏览
以下两段代码

代码一

  1. int main()
  2. {
  3.         fstream file;

  4.         file.close();
  5.         file.open( "test" , std::ios_base::out );
  6.         file<<"adsfasf";
  7.         file.close();

  8.         system( "Pause" );
  9.         return 0;
  10. }
复制代码


代码二

  1. #include <fstream>

  2. int main()
  3. {
  4.         fstream file;

  5.         file.open( "test" , std::ios_base::out );
  6.         file.close();
  7.         file.open( "test2" , std::ios_base::out );
  8.         file<<"adsfasf";
  9.         file.close();

  10.         system( "Pause" );
  11.         return 0;
  12. }
复制代码


不明白在代码一的情形下,为什么创建完file之后,先close再open就不能对test写入东西,但事实又建立了test这个文件。
而在比较正常的代码二的情形下,又没有影响?

开发环境vs2005

迷惑中...

[ 本帖最后由 zzdts 于 2007-6-10 01:14 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-06-10 01:00 |只看该作者
不明白你干吗这么做。

代码一写之前加这句

if ( !file ) cerr << "file error\n";

[ 本帖最后由 antigloss 于 2007-6-10 01:01 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2007-06-10 01:02 |只看该作者
原帖由 antigloss 于 2007-6-10 01:00 发表
不明白你干吗这么做。

代码一写之前加这句

if ( !file ) cerr << "file error\n";


我知道检测可以解决,但是想知道为什么代码一不行。

最近在赶数据结构大作业,不小心出现了这样的问题,想不明白,就上来问问。

[ 本帖最后由 zzdts 于 2007-6-10 01:03 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2007-06-10 01:04 |只看该作者
没有打开文件就调用 close,导致流错误,不能读写。
file.clear(); 应该能解决问题。

论坛徽章:
0
5 [报告]
发表于 2007-06-10 01:16 |只看该作者
原帖由 antigloss 于 2007-6-10 01:04 发表
没有打开文件就调用 close,导致流错误,不能读写。
file.clear(); 应该能解决问题。


那为什么代码二里先开后关,再开有可以?

论坛徽章:
0
6 [报告]
发表于 2007-06-10 01:21 |只看该作者
原帖由 zzdts 于 2007-6-10 01:16 发表


那为什么代码二里先开后关,再开有可以?

这不就是区别了么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP