C++之文件流操作(File Stream)

目录

一.引言

二.文件流对象(fstream)

2.1 流对象的定义

2.2 流对象关联文件

2.2.1 .open 函数

2.2.2 关闭流对象(close 函数)

三. 文件读写

3.1 读写文件本文件

3.2 读写二进制文件

3.3 随机文件读写


一.引言

首先我们自实现对 FILE*fp 的包装,实现对象对文件的访问。实现成员函数 put/get 函数。例子代码如下:

#include 
#include 

using namespace std;

int main()
{
    fstream fs("abc",ios::in|ios::out|ios::trunc);
    if(!fs)
    cout<<"open error"<

二.文件流对象(fstream)

对文件的操作是由文件流类完成的。文件流类在流与文件间建立连接。由于文件流分为三种:文件输入流、文件输出流、文件输入/输出流,所以相应的必须将文件流说明为 ifstream、ofstream 和 fstream 类的对象,然后利用文件流的对象对文件进行操作。

C++之文件流操作(File Stream)_第1张图片

对文件的操作过程可按照以下四步进行:即定义文件流类的对象、打开文件、对文件进行读写操作、关闭文件,下面分别进行介绍。

2.1 流对象的定义

        ifstream ifile; //定义一个文件输入流对象
       ofstream ofile; //定义一个文件输出流对象
       fstream iofile; //定义一个文件输出/输入流对象

2.2 流对象关联文件

2.2.1 .open 函数

定义了文件流对象后,就可以利用其成员函数 open()打开需要操作的文件,该成员函数的函数原型为:
void open(const unsigned char *filename,int mode,int access=filebuf:openprot);

其中:filename 是一个字符型指针,指定了要打开的文件名;mode 指定了文件的打开方式,其值如下所示;access 指定了文件的系统属性,取默认即可。

  • ios::in :以输入(读)方式打开文件,若文件不存在则报错。 0x01
  • ios::out :以输出(写)方式打开文件, 若文件不存则创建。    0x02
  • ios::app :打开一个文件使新的内容始终添加在文件的末尾,若文件不存在,则创建。0x08
  • ios::trunc:若文件存在,则清除文件所有内容;若文件不存在,则创建新文件。    0x10
  • ios::binary:以二进制方式打开文件,缺省时以文本方式打开文件。         0x80
  • ios::nocreate:打开一个已有文件,若该文件不存在,则打开失败。        0x20
  • ios::noreplace:若打开的文件已经存在,则打开失败。                   0x40

几点说明:

a. 在实际使用过程中,可以根据需要将以上打开文件的方式用"|" 组合起来。如:
ios::in|ios::out 表示以读/写方式打开文件
ios::in|ios:: binary 表示以二进制读方式打开文件
ios::out|ios:: binary 表示以二进制写方式打开文件
ios::in|ios::out|ios::binary 表示以二进制读/写方式打开文件
b. 如果未指明以二进制方式打开文件,则默认是以文本方式打开文件。
c. 构造函数打开文件
对于 ifstream 流, mode 参数的默认值为 ios::in,
对于 ofstream 流,mode 的默 认值为 ios::out|ios::trunc,
对于 fstream 流, mode 的默认值为 ios::int|ios::out|ios::app

按位或(运算或)(“|”)和逻辑或(“||”)的区别

  • 按位或 | 输出运算结果,逻辑或 || 输出true 或者 false   例如: 1|2 = 3    1||2 = 1
  • 按位或 | 对所有的表达式都要判断,逻辑或 ||运算符第一个表达式不成立的话,后面的表达式不运算,直接返回

除此之外还有 桉位与& 与逻辑与 &&

2.2.2 关闭流对象(close 函数)

在文件操作结束(即读、写完毕)时应及时调用成员函数 close()来关闭文件。该函数比较简单,没有参数和返回值。

三. 文件读写

3.1 读写文件本文件

C++之文件流操作(File Stream)_第2张图片

3.2 读写二进制文件

3.3 随机文件读写

         与文件指针相关的函数如下:

C++之文件流操作(File Stream)_第3张图片

参照位置:

C++之文件流操作(File Stream)_第4张图片

示例代码:

infile.seekg(100); //输入文件中的指针向前移到 100 个字节的位置
infile.seekg(-50,ios::cur); //输入文件中的指针从当前位置后移 50 个字节
outfile.seekp(-75,iso::end); //输出文件中指针从文件尾后移 75 个字节

 

 

你可能感兴趣的:(C++笔记)