fstream:
对于文件的操作很久两年前就开始使用了,但是仅仅为了达到满足自己需求的目的,就是要么是写,要么是读。从来没有对其进行详细的了解。自己也曾
经想过花一点时间去总结一下,这个东西到底应该怎么用。但是由于:自己的本性懒,所以一直拖到今天,挤出一点时间把这个问题彻底解决一下。还有一点,读写不要同时用否则会出问题。相用的话,需要先seekg或者 seekp;
默认打开模式是共享的。
ios::in 为输入打开文件。文件不存在打开失败,文件存在则打开
ios::out:为输入打开文件。文件不存在则创建在打开,文件存在则清空
ios::nocreate 文件存在时候,不起作用。当文件不存在时候,强制文件不存在也不创建,这个项应该是针对ios::out;
ios::noreplace 不覆盖文件,所以打开文件时如果文件存在失败。当文件不存在时,此参数无效。文件存在时,这个选项对于ios::in无效,因为它没有覆盖的意图。但是对于ios::out则是有作用的,当文件存在时打开失败。
ios::binary文件默认是以文本形式打开,当指定次模式,以二进制打开。
ios::trunc如果文件不存在,则无效,当文件存在时,首先删除里面的内容。
ios::app 所有输出附加在文件末尾,读操作与写操作共享指针(位置指针),具有读文件的特性,也就是说在与iso::out组合使用的时候,不清空文件
ios::ate 初始位置:文件尾
假想文件操作(假设文件存在):
文件末尾添加:iso::out|iso::app 或者iso::out|iso::in|ios::ate mark:iso::out|iso::ate会清空里面的数据
清空文件添加:iso::out
读取:iso::in
读写文件:iso::out|iso::in
读写前清空:iso::out|iso::in|iso::trunc
假想文件操作(假设文件不存在)
不可能进行纯粹的读操作
向文件里写东西:ios::out
向文件里读写:iso::in|iso::out