随笔 - 119  文章 - 290  trackbacks - 0

博客搬家了哦,请移步
叫我abc

常用链接

留言簿(12)

随笔分类

我的博客

搜索

  •  

积分与排名

  • 积分 - 302214
  • 排名 - 84

最新评论

阅读排行榜

从旧blog转移过来的。
前些日子写数据库实验的时候,为了这些知识没少头疼过,基础贫弱啊。
ios::app:   以追加的方式打开文件 
ios::ate:   文件打开后定位到文件尾,ios:app就包含有此属性 
ios::binary:  以二进制方式打开文件,缺省的方式是文本方式。两种方式的区别见前文 
ios::in:    文件以输入方式打开 
ios:out:   文件以输出方式打开 
ios::nocreate: 不建立文件,所以文件不存在时打开失败  
ios::noreplace:不覆盖文件,所以打开文件时如果文件存在失败 
ios::trunc:  如果文件存在,把文件长度设为0
说下某些地方用过之后的惊奇吧(说惊奇其实只是自己之前把知识理解歪了而已)。
ios::app,该模式只能把数据添加到文件的尾部,如果想修改别的地方是不行的,因为seekp()根本不起作用,指针总是指向末尾,而我之前一直误解该模式等价于ios::out | ios::nocreate。
ios::in | ios::app,也是拜对ios::app的错误理解所赐,居然认为这是ios_in | ios_out,结果数据库的文件是越写越长,自己还一愣一愣的。
ios_binary,感觉只是一个表达指示作用,事实上,用read,write方法的话,都是进行二进制操作的。不过可能添加这个指示的话,会有优化作用?没校验过。
终于明白ios_binary的意义了,如果操作的真的是二进制文件,那么就一定要指定它。我今天操作一个文件时没有指定它,结果写进去的buffer是一行一行的,因为buffer的最后一个是换行符。后来指定为binary之后,写入的内容终于连续了。
posted on 2006-05-29 16:45 LOGOS 阅读(5508) 评论(3)  编辑 收藏 引用

FeedBack:
# re: C++ std::fstream open mode 2006-05-31 22:19 含笑半步癫
感觉c++的fstream用了这些,没有c的fopen顺手。其实是经常找不到这些东西放在哪里,和他们的名字  回复  更多评论
  
# re: C++ std::fstream open mode 2006-06-01 12:05 LOGOS
有些理解了ios_binary的意义,添入文章中了。  回复  更多评论
  
# re: C++ std::fstream open mode 2015-09-21 10:43 hdj
i'am got  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理