您的位置:首页 > 运维架构

【杂谈】坑爹的 fstream open mode 细节问题

2013-12-16 11:14 357 查看
  最近在做数据结构的大作业,要写个简单的数据库,因此和 fstream 打交道略多。

ios::app:   以追加的方式打开文件
ios::ate:   文件打开后定位到文件尾,ios:app就包含有此属性
ios::binary:  以二进制方式打开文件,缺省的方式是文本方式。两种方式的区别见前文
ios::in:    文件以输入方式打开
ios:out:   文件以输出方式打开
ios::nocreate: 不建立文件,所以文件不存在时打开失败 
ios::noreplace:不覆盖文件,所以打开文件时如果文件存在失败
ios::trunc:  如果文件存在,把文件长度设为0

  以上是网络上都能找到的一些解释,但在使用过程中有些迷之问题。

1. ios::in | ios::out 在文件不存在的时候是不会创建新文件的,必须用个 ios::in | ios::out | ios::app

2. ios::app 无法seek到文件长度以外的地方 put('\0') 写一串空字符,根据网上有人说 ios::app 后就只能在文件后写,无法seek,有待验证,之后试验后补充

临时解决办法是 先用ios::app 在不存在的时候创建,再关闭,然后不用 ios::app 打开进行扩展空间
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐