c++ 文件流

来源:互联网 发布:阿里云系统盘满了 编辑:程序博客网 时间:2024/05/16 15:20

c++标准库中对文件流的有3个类使用:

fstream类,它是 从iostream类派生的,支持对磁盘文件的输入和输出。

ifstream类,它是 从istream类派生的,支持对磁盘文件的输入。

ofstream类,它是 从ostream类派生的,支持对磁盘文件的输出。

输入是指,从磁盘文件输入到内存中调用,输出是,从内存中输出到磁盘文件中。


三者用法大致相同,下面以fstream为例,来进行文件的输入输出。


#include <fstream>

//fstream ffile;//fstream是类,可以使用默认的构造函数,也可以直接选择读取文件//ffile.open("file.txt",ios::out);//两个参数,文件名,输入输出方式fstream ffile("file.txt",ios::in);//ffile.close();//使用后一定要关闭文件流,不然,无法完成输入输出操作

对于输入输出方式,如下:

ios::in 以输入方式打开文件

ios::out 以输出方式打开文件,为默认模式,如果已有文件,则将其中内容清空。

ios::app 以输出方式打开文件,写入数据添加在文件末尾

ios::binary 以二进制方式打开文件,若不指定,则为默认的ASCII方式打开文件,二进制格式时,即可以同时进行输入输出


ios::ate   文件指针指向文件末尾,即只能对文件的最后一个字符进行更改

ios::trunc 如果文件已存在,则删除所有数据,如果文件不存在,则新建一个文件,默认ios::out时,也默认此模式


ios::nocreate 打开文件,若文件不存在,则打开失败

ios::noreplace 若文件不存在,则新建一个文件,若文件存在,则操作失败,即不能对文件进行读写

对于ios::noreplace ios::nocreate在c++中改成了ios::_Nocreate  ios::_Noreplace

当声明只能输入时,进行输出操作是无效的,同理,以输出方式打开是不能进行输入的。

ASCII文件的操作是极其简单的,就如下,类似使用cout的输出与cin的输入一样。但<<和>>只能对char *,char 和const char *进行操作,不能直接输出string。

fstream ffile("file.txt",ios::out|ios::in);//char get[5];//ffile<<"awfaw";for(int i=0;i<5;i++){ffile>>get[i];}ffile.close();//使用后一定要关闭文件流,不然,无法完成输入输出操作

一些细节,ios::ate使文件指针指向文件末尾,若想要输出加ios::out|ios::in。

有put,get,getline等成员函数进行字符的输入输出。

ASCII只能进行输出或只能进行输入,不能同时输入输出。

fstream ffile("file.txt",ios::in|ios::out);//char get[5];ffile.put('9');ffile.get(get[0]);char str[5][10];ffile.getline(str[0],10);//储存数组,和读取字数,其实这不是getline,而是一次读入指定数量数据//ffile.get(get[1]);ffile.getline(str[1],8);ffile.close();


对于二进制文件:

使用read和write进行读写操作,二进制文件可以同时进行输入输出。

二进制文件读写时,文件指针会随着输入输出而改变,则有以下几种常用函数来控制文件指针:

tellg() 返回输入指针当前位置

seekg(int 文件中位置)设置输入文件中的指针的位置

seekg(int 偏移量,参考位置) 按照偏移移动到指定位置,参考位置共有三个   ios::beg  文件开头  ios::cur  当前指针位置   ios::end  文件末尾

teelp() 输出指针位置

seekp(int) 设置输出指针位置

seekp(int  ,参考位置) 按照偏移设置指针位置

fstream ffile("file.txt",ios::binary|ios::in|ios::out);//输入输出ffile.seekp(ios::beg);ffile.write("cc",2);char r[10];ffile.seekg(5);//位置是从0开始的ffile.read(r,2);ffile.close();


使用“\r\n"进行换行操作。




0 0
原创粉丝点击