【杂谈】坑爹的 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 打开进行扩展空间
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 打开进行扩展空间
相关文章推荐
- PHP问题 —— failed to open stream: HTTP request faile
- linux下的LAMP环境中的问题:failed to open stream: Permission denied in
- 【解决问题】'failed to open stream:Permission denied in......'在php出现情况总结
- file_put_contents() failed to open stream: Permission denied 问题解决
- PHP问题 —— failed to open stream: HTTP request faile
- 今天遇到一个问题,很纠结include(authenticate.php): failed to open stream: No such file or directory
- file_put_contents() failed to open stream: Permission denied 问题解决(生成日志文件)
- Laravel migration PHP Storm遇到的问题:failed to open stream: Operation now in progress
- 如何使用 URLOpenStream 函数 - 回复 "天泽" 的问题
- ifstream的open函数问题
- file_put_contents() failed to open stream: Permission denied 问题解决(生成日志文件)
- 初学TinyXml,要注意的细节,网上很难找到的中文问题,stream内存管理问题
- Ubuntu云服务器tp框架遇到failed to open stream: Permission denied问题
- Delpi FileStream Create Mode, FileOpen Access Mode
- Laravel 开发中遇到权限问题 failed to open stream: Permission denied
- linux下的open函数中的mode问题
- "CURLOPT_FOLLOWLOCATION cannot be activated when safe_mode is enabled or an open_basedir is set" 问题
- ajax同步通信的小细节_IE浏览器中open函数的参数设置问题
- <php+mysql>failed to open stream: Permission denied问题解决办法
- failed to open stream解决办法-关于WIN主机下配置PHP的若干问题解决方案总结