目录

一.引言

二.文件流对象(fstream)

2.1 流对象的定义

2.2 流对象关联文件

2.2.1 .open 函数

2.2.2 关闭流对象(close 函数)

三. 文件读写

3.1 读写文件本文件

3.2 读写二进制文件

3.3 随机文件读写


一.引言

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

#include <iostream>
#include <fstream>using namespace std;int main()
{fstream fs("abc",ios::in|ios::out|ios::trunc);if(!fs)cout<<"open error"<<endl;fs.put('a');fs.put('b');fs.put('c');fs.put('d');fs.seekp(0,ios::beg);char ch;while(fs.get(ch),!fs.eof()){cout<<ch;}fs.close();return 0;
}

二.文件流对象(fstream)

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

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

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 读写文件本文件

3.2 读写二进制文件

3.3 随机文件读写

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

参照位置:

示例代码:

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

C++之文件流操作(File Stream)相关推荐

  1. C/C++文件输入输出操作——FILE*、fstream、windowsAPI

    C/C++文件输入输出操作--FILE*.fstream.windowsAPI 基于C的文件操作  在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之. 一. ...

  2. Java之文件流操作的文件读写

    Java之文件流操作的文件读写 本人非常喜欢Java的代码风格,今天记录一下文件字符串的读写,但是Java对于 制作exe文件非常不友好,而本人业务的要求,基本上都是制作exe文件,或者程序,Java ...

  3. 文件目录和目录文件的作用区别和联系 C语言文件相关操作 FILE用法

    一.文件目录和目录文件的作用区别和联系 1.他们各自的概念和联系 文件目录:把所有的FCB组织在一起,就构成了文件目录,即文件控制块的有序集合 **FCB:**为了能对一个文件进行正确的存取,操作系统 ...

  4. 02功能之读写文件流操作(C语言实现读取文件指定一行)

    02功能之读写文件流操作(C语言实现读取文件指定一行) 1 C语言读取文件指定一行 // 读取文件指定一行 int ReadLine1(const char *fileName, char outBu ...

  5. <Linux基础--文件描述符fd、重定向、文件流指针FILE*概念理解>

    文章目录 1.文件描述符fd 2.重定向 3.文件流指针:FILE* 4.动态库和静态库 1.文件描述符fd 文件描述符:实际上就是内核中一个进程打开的文件描述信息数组(file* fd_array[ ...

  6. 【Delphi入门】文件系统(文件分类 文件文本变量 文件操作 文件流操作)

    文件分类 文本文件(TextFile) & 二进制文件(Flie) 二进制形式存放数据占有存储空间较少,但不直观:文本文件与之相反 文件是由相同类型的数据元素组成的序列.在DELPHI中对文件 ...

  7. 安卓学习 Day23:文件流操作

    文件流操作 一.案例演示--文件操作 1.创建安卓应用 2.添加背景图片 3.字符串资源文件 4.主布局资源文件 5.在raw目录里创建文件 - test.txt 6.在assets目录里创建文件 - ...

  8. 文件及文件夹操作- File类、Directory 类、FileInfo 类、DirectoryInfo 类

    命名空间:using system .IO; 1. File类: 创建:File.Create(路径);创建文件,返回FileStream FileStream fs = File.Create(路径 ...

  9. c语言 文件流 输出数据类型,总结C++中输入输出流及文件流操作

    当程序员在编写程序的时候,最不可分割的是对文件做的相应的操作,总结C++中输入输出流及文件流操作大家都了解吗?想要了解的朋友,就随爱站技术频道小编来看看吧. 1.流的控制 iomanip        ...

最新文章

  1. Android各组件/控件间通信利器之EventBus
  2. 【leetcode】Intersection of Two Linked Lists
  3. STM32F4 HAL库开发 -- 串口
  4. 优雅的使用Laravel之phpstorm配置
  5. php公众号客服系统,公众号在线客服系统哪个好,主流客服系统评测及推荐
  6. 逻辑回归分类python实例_Python逻辑回归原理及实际案例应用
  7. anaconda安装python包_Anaconda:安装或更新 Python 第三方包
  8. python登录验证_Python第一天-----简单登录验证
  9. 带你玩转Visual Studio——带你高效开发
  10. 如何自动调整代码格式 - vim /Visual Studio/ Source Insight...
  11. iOS开发初学者需要经常去的论坛或网站
  12. 人工智能-动物识别专家系统Python实现
  13. Python基础课程笔记·嵩天
  14. JRebel-JVMTI [ERROR] You’re using an incompatible ‘jrebel.jar’ with the JRebel Agent.【完美解决方案】
  15. Python画图源码|玫瑰花|皮卡丘|小猪佩奇|哆啦A梦|大白|小猫
  16. 网站打开速度慢的解决方法
  17. lae界面开发工具入门之介绍九--lua脚本组件篇
  18. 软工个人随笔3 罗骏 201521123121
  19. 【Java没基础】关于stream has already been operated upon or closed问题
  20. 7年python程序员总结 - Python学习方法和高手养成

热门文章

  1. 代码中动态设置view或布局的宽高
  2. 实现简单的登录界面(用户,密码,验证码)
  3. 旋转数组的最小数字+堆排介绍19.9.14
  4. vivo浏览器的快速开发平台实践-总览篇
  5. php图片一句话木马使用方法
  6. YOLOV7开源代码讲解--训练参数解释
  7. Lua os.time()函数
  8. 自主可控!万应低代码通过华为鲲鹏、麒麟等多项国产化认证及国家信息安全等级保护三级备案证明
  9. python3.5.3网盘链接
  10. 文档编号与文档版本号的作用