一、流的概念
1.什么是流
- 流是一种抽象的概念,表示数据的无结构化传递
- C++流是指信息从外部输入设备(键盘)向计算机内部(如内存)输入和内存向外输出设备输出的过程。
- C++有I/O标准类库,用以完成流操作功能
二、fstream的使用
1.fstream的作用
fstream是C++中常用的文件操作类
2.C++文件操作
- 包含头文件fstream,打开命名空间std,或是std::fstream
- 使用fstream类来实例化对象,通过对象的成员来进行文件操作
3.常用的成员函数
(1)open(“文件名路径”,打开方式)
文件路径:绝对路径或相对路径
打开方式:表示打开文件的模式,不同的模式对于不同的数据操作(只读、只写、二进制操作)
(2)close()关闭文件
(3)is_open()判断文件是否打开成功,成功返回1
(4)eof()判断文件是否到了文件末尾,到了返回true
(5)put(字符)
往文件中写入一个字符
fstream file;
file.open("1.txt",ios::out);
file.put('w');
char c='s';
file.put(c);
(6)get()
从文件中读取字符,有3中常用的形式
char ch;
file.get(ch);//读取一个字符,赋值给ch
ch=file.get();//读取一个字符,赋值给ch
get(char *str,int num,char delim='\n');//读取num个字符,赋值给str,或在这个期间读到了'\n'结束
getline(char *str,int num,char delim='\n');//读取num个字符,赋值给str,或在这个期间读到了'\n'结束
get和getline的区别:
都可以读多个字符,get会把文件内遇到终结符留在输入流中,所以需要使用get将终结符扔掉。getline自动把输入流中的终结符取消掉了,下次可以继续直接读取。读一行字符时,一般使用getline。
(7)seekp()或seekg()
文件指针的移动
file.seekp(5,ios::beg);//从文件开头的位置往后偏移5个字符
在这里,数字5,表示的是文件指针往后移动5个字节的位置,如果是-5那么就是往前移动5个字节的位置
第二个参数是文件指针从哪里移动位置有三个:
ios::beg 文件开头
ios::end 文件末尾
ios::cur 文件指针当前的位置
(8)tellg()或tellp()
获取文件指针的移动大小,文件指针移动可以
int len=file.tellg();//获取文件指针移动了多少
(9)二进制形式读写文件
write()写入文件
writr(const char *str,int str_size);
写入一个整数 int a=10;
file.writ((const char *)&a,sizeof(int));
read()读取文件
read(char *str,int str_size);
读取一个整数 int a=;
file.read((char*)&a,sizeof(int));//读取4个字节的整数,赋值给a
三、使用重载的 << >>
1、使用运算符来进行文件操作的有点类似于I/O流中的cin和cout,只不过cin和cout是作用在内存,而fstream是作用在文件
示例:
fstream file;
int x=666;
file.open("2.txt",ios::out);
file<<"输入输出,明天头秃"<<endl;
file<<x<<endl;
//上面是写入文字和数字,有两行
file.close();
file.open("2.txt",ios::in);
char str[1024];
int temp=0;
file>>str>>temp;//从文件读取
cout<<str<<endl<<temp<<endl