C++ 提供了 std::fstream ,旨在以独立于平台的方式访问文件。 std::fstreamstd::ofstream 那里继承了写入文件的功能,并从 std::ifstream 那里继承了读取文件的功能。换句话说, std::fstream 提供了读写文件的功能。

数据类型 描述
ofstream 该数据类型表示输出文件流,用于创建文件并向文件写入信息。
ifstream 该数据类型表示输入文件流,用于从文件读取信息。
fstream 该数据类型通常表示文件流,且同时具有 ofstream 和 ifstream 两种功能,这意味着它可以创建文件,向文件写入信息,从文件读取信息。

要使用 std::fstream 类或其基类,需要包含头文件 <fstream>

#include <fstream>

C++ 编程中,我们使用流插入运算符( << )向文件写入信息,就像使用该运算符输出信息到屏幕上一样。唯一 不同的是,在这里使用的是 ofstreamfstream 对象,而不是 cout 对象。

同理,我们使用流提取运算符( >> )从文件读取信息,就像使用该运算符从键盘输入信息一样。唯一不同的是,在这里您使用的是 ifstreamfstream 对象,而不是 cin 对象。

1. 使用open( )和close( )打开和关闭文件

要使用 fstreamofstreamifstream 类,需要使用方法 open() 打开文件, open() 函数是 fstreamifstreamofstream 对象的一个成员。

fstream myFile;
myFile.open("HelloFile.txt",ios_base::in|ios_base::out|ios_base::trunc);if (myFile.is_open()) // check if open() succeeded
{// do reading or writing heremyFile.close();
}

open() 接受两个参数:

  • 第一个是要打开的文件的路径和名称(如果没有提供路径,将假定为应用程序的当前目录设置);
  • 第二个是文件的打开模式。
模式标志 描述
ios::app 追加模式。所有写入都追加到文件末尾
ios::ate 文件打开后定位到文件末尾
ios::in 以只读方式打开文件
ios::out 以只写方式打开文件
ios::trunc 导致现有文件被覆盖,这是默认设置
ios_base::binary 创建二进制文件(默认为文本文件)

可以把以上两种或两种以上的模式结合使用。例如,如果您想要以写入模式打开文件,并希望截断文件,以防文件已存在,那么您可以使用下面的语法:

ofstream outfile;
outfile.open("file.dat", ios::out | ios::trunc );

类似地,您如果想要打开一个文件用于读写,可以使用下面的语法:

ifstream  afile;
afile.open("file.dat", ios::out | ios::in );

在上述代码中,指定了模式 ios_base::trunc (即便指定的文件存在,也重新创建它)、 ios_base::in (可读取文件)和 ios_base::out (可写入文件)。

注意到在上述代码中使用了 is_open() ,它检测 open() 是否成功。

注意:保存到文件时,必须使用 close() 关闭文件流。 close() 函数是 fstreamifstreamofstream 对象的一个成员。

还有另一种打开文件流的方式,那就是使用构造函数:

fstream myFile("HelloFile.txt",ios_base::in|ios_base::out|ios_base::trunc);

如果只想打开文件进行写入,可使用如下代码:

ofstream myFile("HelloFile.txt", ios_base::out);

如果只想打开文件进行读取,可使用如下代码:

ifstream myFile("HelloFile.txt", ios_base::in);

注意:无论是使用构造函数还是成员方法 open() 来打开文件流,都建议您在使用文件流对象前,使用 open() 检查文件打开操作是否成功。

2. 使用open( )创建文本文件并使用运算符<<写入文本

有打开的文件流后,便可使用运算符 << 向其中写入文本。

#include <fstream>
#include <iostream>
using namespace std;int main()
{ofstream myFile;myFile.open("HelloFile.txt", ios_base::out);if (myFile.is_open()){cout << "File open successful" << endl;myFile << "My first text file!" << endl;myFile << "Hello file!" << endl;cout << "Finished writing to file, will close now" << endl;myFile.close();}return 0;
}

第 8 行以 ios_base::out 模式(即只写模式)打开文件。第 10 行检查 open( ) 是否成功,然后使用插入运算符 << 写入该文件流。最后,第 18 行关闭文件流。

3. 使用open( )和运算符>>读取文本文件

要读取文件,可使用 fstreamifstream ,并使用标志 ios_base::in 打开它。

#include <fstream>
#include <iostream>
#include <string>
using namespace std;int main()
{ifstream myFile;myFile.open("HelloFile.txt", ios_base::in);if (myFile.is_open()){cout << "File open successful. It contains: " << endl;string fileContents;while (myFile.good()){getline (myFile, fileContents);cout << fileContents << endl;}cout << "Finished reading file, will close now" << endl;myFile.close();}elsecout << "open() failed: check if file is in right folder" << endl;return 0;
}

请注意,这里没有使用提取运算符 >> 将文件内容直接读取到第 18 行使用 cout 显示的 string ,而是使用 getline() 从文件流中读取输入。

C++ 笔记(21)— 处理文件(文件打开、关闭、读取、写入)相关推荐

  1. python关闭读写的所有的文件-Python文件操作:文件的打开关闭读取写入

    Python文件操作:文件的打开关闭读取写入 一.文件的打开关闭 Python能以文本和二进制两种方式处理文件,本文主要讨论在Python3中文本文件的操作. 文件操作都分为以下几个步骤: 1.打开文 ...

  2. python以写模式打开的文件无法进读操作_Python文件操作:文件的打开关闭读取写入...

    Python文件操作:文件的打开关闭读取写入 一.文件的打开关闭 Python能以文本和二进制两种方式处理文件,本文主要讨论在Python3中文本文件的操作. 文件操作都分为以下几个步骤: 1.打开文 ...

  3. 文件操作——打开关闭、顺序读写、随机读写

    文件 文件功能的角度来分类 程序文件 包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe) 数据文件 文件的内容不一定是程序,而是 ...

  4. b是python文件二进制打开,Python核心编程16 ----- 文件的打开(读取),修改,关闭,二进制...

    ctrl + 左键点击 进入模块 1.文件打开 文件(file) 通过Python程序来对计算机中的各种文件进行增删改查的操作 --- I/O(Input/Output) 操作文件 1.打开文件 2. ...

  5. Python核心编程16 ----- 文件的打开(读取),修改,关闭,二进制

    ctrl + 左键点击 进入模块 1.文件打开 文件(file) 通过Python程序来对计算机中的各种文件进行增删改查的操作 --- I/O(Input/Output) 操作文件 1.打开文件 2. ...

  6. C语言_文件篇(文件的打开,读取,写入,定位,关闭)

    文件类型指针 FILE *指针变量名//例如:FILE *fp; 文件指针不同于文件位置,文件指针指向文件位置,在使用前必须在程序中定义即使文件指针指向某个文件. 文件的打开(fopen函数) fop ...

  7. C语言文件操作(一) —— 认识文件的打开/关闭(fopen / fclose)

            目录 1.初步理解打开文件 2.打开/关闭文件的函数 (1) fopen函数 (2) fclose 函数 3.fopen函数的使用 1.初步理解打开文件 站在系统的角度,每个文件被打开 ...

  8. linux用户读取文件过程,Python中读取写入文件并进行文件与用户交互的操作

    一.提前知识点 在Python中是同样和其他语言一样可以进行文件的读取写入操作,值得注意的是,Python中打开文件读取的方式有几种,分别是以下几种: f = open('username.txt') ...

  9. python练习题——文件的打开、读取、复写

    '''打开文件,作为一个对象进行操作''' '''仅度,仅写,添加三种模式'''a = open("小重山","r")#打开小重山这个文件,以一种只读的模式 f ...

  10. npy文件的打开,读取

    在复现Sketchmate的时候,碰到了一个叫npy文件的东西: alpha = 0.001 cf_class = torch.from_numpy(np.load("center_feat ...

最新文章

  1. 2022斯坦福AI指数报告出炉!中国霸榜AI顶会,但引用量最低
  2. iOS 排序算法总结、二分法查找
  3. [干货来袭]MSSQL Server on Linux预览版安装教程(先帮大家踩坑)
  4. mysql数据库时间突然是12小时制_为什么存入mysql数据库中的timestamp,晚了13或14个小时...
  5. JupyterHub on Kubernetes-Helm安装
  6. 力扣算法题—095不同的二叉搜索树【二叉树】
  7. vs code编辑php时,突然显示红色波浪线的错误提示的解决方案
  8. 简记SqueezeNet
  9. $.each(callback)方法
  10. 浪潮工程师窃取公司CPU、硬盘在咸鱼挂卖被阿里发现,判处有期徒刑3年3个月...
  11. 使用Java实现word文档转图片 在线预览
  12. 心动的本质是什么_喜欢上一个人的本质是什么?
  13. 念荆轲[原创诗一首]
  14. error:crosses initialization of ...的解决办法
  15. UG NX二次开发(C#)-UIStyler-ListBox操作
  16. 笔记本右侧键盘数字打不出来
  17. ioutil.ReadFile golang语法
  18. MongoDB——文档操作(更新文档)
  19. 电信云2020校招-技术笔试题
  20. Python装饰器最经典教程,以最易理解的方式教会你

热门文章

  1. 管理虚拟机的艺术——有备无患
  2. CentOS Docker安装配置部署Golang web helloworld
  3. Redis 笔记(02)— keys 键相关命令(查询数据库key数量、判断key是否存在、指定key过期时间、查看key类型、查看key剩余秒数、选择数据库、删除key、删除数据库)
  4. Docker 入门系列(6)- Docker 互联
  5. PyTorch 高级实战教程:基于 BI-LSTM CRF 实现命名实体识别和中文分词
  6. 使用ONNX将模型转移至Caffe2和移动端
  7. Usb-type-C端口实现的挑战与设计方案
  8. 用NVIDIA-TensorRT构造深度神经网络
  9. 语义分割:基于openCV和深度学习(一)
  10. 斯坦福大学李飞飞团队图像分类课程笔记