@Author:Runsen

在C++中,文件主要通过使用fstream头文件中的fstream、ifstream、ofstream三个类来处理。

  • ofstream:在文件上写入的流类
  • ifstream:从文件读取的 流类
  • fstream:从/向文件读取和写入的流类。

在 C++ 文件处理中支持以下操作:

  • 打开文件
  • 关闭文件
  • 从文件中读取
  • 写入文件

打开文件

打开方式 解释
ios::in 以输入模式打开文件进行读取。
ios::out 以输出模式打开文件以将数据写入文件
ios::ate 在文件末尾设置初始位置。如果未设置文件结束标志,则初始位置设置为文件的开头。
ios::app 如果文件被打开用于写入并且已经有内容,则内容将被截断
ios::trunc 以追加模式打开文件,以便将所有内容追加到文件末尾。
ios::binary 以二进制模式打开文件。

例如,如果我们要打开一个文件“myfile.dat”以二进制方式追加数据,那么我们可以编写如下代码。

ofstream myfile;
myfile.open(“myfile.dat”, ios::out|ios::app|ios::binary);

注意: 文件打开方式可以配合使用,利用|操作符

关闭文件

当我们完成对文件的输入和输出操作时,我们可以使用 close 函数来关闭文件并释放文件所持有的资源。

因此,当我们完成对上述文件 myfile 的操作后,我们可以关闭该文件,如下所示:

myfile.close();

一旦使用 close 函数关闭文件,关联的文件对象就可以重新用于打开另一个文件。

从文件中写入

我们还可以使用文件操作将数据写入文件。我们用来将数据写入文件的运算符是流插入运算符 (<<)。这与我们使用 cout 将数据打印到标准输出设备的操作符相同。两者之间的区别在于,对于文件相关的写入,我们使用 ofstream 或 fstream 对象。

写入文件步骤如下:

  1. 包含头文件

    #include <fstream>

  2. 创建流对象

    fstream ofs;

  3. 打开文件

    ofs.open(“文件路径”,打开方式);

  4. 写数据

    ofs << “写入的数据”;

  5. 关闭文件

    ofs.close();

#include<iostream>
#include<fstream>using namespace std;int main() {// 1. 创建 流对象ofstream ofs;// 2.打开文件ofs.open("demo.txt", ios::out);// 3.写入数据ofs << "name:runsen" << endl;ofs << "sex:boy "<< endl;ofs << "age:18" << endl;// 4.关闭流对象ofs.close();
}

从文件中读取

我们可以使用流提取运算符 (>>) 从文件中逐行读取信息。这类似于使用 cin 从标准输入读取输入。唯一的区别是在文件的情况下,使用 ifstream 或 fstream 对象而不是 cin。

#include <fstream>
#include<iostream>
#include <string>using namespace std;int main() {fstream fs;fs.open("demo.txt", ios::in);if (!fs.is_open()){cout << "文件打开失败" << endl;return;}string buf;while (getline(fs, buf)){cout << buf << endl;}fs.close();return 0;
}

【小白学习C++ 教程】十八、C++ 中文件处理相关推荐

  1. ComicEnhancerPro 系列教程十八:JPG文件长度与质量

    作者:马健 邮箱:stronghorse_mj@hotmail.com 主页:http://www.comicer.com/stronghorse/ 发布:2017.07.23 教程十八:JPG文件长 ...

  2. 【小白学习PyTorch教程】八、使用图像数据增强手段,提升CIFAR-10 数据集精确度...

    「@Author:Runsen」 上次基于CIFAR-10 数据集,使用PyTorch构建图像分类模型的精确度是60%,对于如何提升精确度,方法就是常见的transforms图像数据增强手段. imp ...

  3. 【小白学习C++ 教程】八、在C++指针传递引用和Const关键字

    @Author:Runsen 以前,当我们将参数传递给函数时,我们一般使用普通变量,这称为pass-by-value方法.但是因为传递给函数的变量有可以出现超出了范围的问题,这样我们实际上无法修改参数 ...

  4. 【小白学习PyTorch教程】八、使用图像数据增强手段,提升CIFAR-10 数据集精确度

    @Author:Runsen 上次基于CIFAR-10 数据集,使用PyTorch ​​构建图像分类模型的精确度是60%,对于如何提升精确度,方法就是常见的transforms图像数据增强手段. im ...

  5. 【小白学习keras教程】八、Sequential Model和模型函数API两种模型建立方法

    @Author:Runsen 文章目录 Load dataset Sequential Model API 方法1 方法2 模型函数API 单输入输出 合并图层 1.连接 2. add, subtra ...

  6. python3上传文件_Python3学习笔记(十八):文件上传和下载

    importrequests upload_url= 'http://upload.renren.com/upload.fcgi?pagetype=addpublishersingle&hos ...

  7. python3下载文件-Python3学习笔记(十八):文件上传和下载

    importrequests upload_url= 'http://upload.renren.com/upload.fcgi?pagetype=addpublishersingle&hos ...

  8. 堆栈——Windows核心编程学习手札之十八

    堆栈 --Windows核心编程学习手札之十八 堆栈可以用来分配许多较小的数据块,可以不考虑分配粒度和页面边界之类的问题,但分配和释放内存块的速度比其他机制要慢,并且无法直接控制物理存储器的提交和回收 ...

  9. OpenCV学习笔记(十六)——CamShift研究 OpenCV学习笔记(十七)——运动分析和物体跟踪Video OpenCV学习笔记(十八)——图像的各种变换(cvtColor*+)imgproc

    OpenCV学习笔记(十六)--CamShift研究 CamShitf算法,即Continuously Apative Mean-Shift算法,基本思想就是对视频图像的多帧进行MeanShift运算 ...

  10. 二维数组离散程度matlab,(十八)数据分析中的一些概念

    (十八)数据分析中的一些概念 HIKAI 29 SEP 2017 0 Comments 矢量.向量.标量 矢量和向量是一个东西,只是在不同领域里面用到的不同称呼.矢量常常用在物理学中,向量在数学.几何 ...

最新文章

  1. python数据结构与算法:双向链表
  2. PHP取得json前面有乱码(去除文件头部BOM)
  3. (转)linux运行tomcat时JRE_HOME显示不对怎么办?
  4. CF - 741(C. Arpa’s overnight party and Mehrdad’s silent entering) 二分图构造
  5. python pillow无法安装_Pillow
  6. spark学习-63-源代码:schedulerBackend和taskScheduler的创建(1)-local
  7. LOJ #6051. 「雅礼集训 2017 Day11」PATH
  8. @excel 注解_SpringBoot中关于Excel的导入和导出
  9. Server 安装 caffee
  10. 【PyTorch深度学习项目实战100例】—— 基于ResNet101实现猴痘病毒识别任务 | 第31例
  11. 图解CSS3 Flexbox属性
  12. Pohlig-Hellman算法求Elgamal算法私钥+大步小步法解决DLP(离散对数问题)
  13. 使用node+vue.js实现SPA应用,解决了SPA应用的最大缺点SEO
  14. Win10 双屏:主屏和左右屏设置
  15. 蓝牙简介 | bluetooth
  16. 部署-Mycat-Server-1.6.7.4安装与配置(CentOS 7.7)
  17. SQL Server 2016 [修改数据库名称]及[添加次文件和日志文件]
  18. 【Golang实战】——XPath解析网页
  19. 杉岩数据对象存储替换IBM FileNet,突破性能瓶颈
  20. VC 2005安装闪了一下就没了_CAD2010(精简版)安装教程

热门文章

  1. Cpp 对象模型探索 / 继承关系下的虚函数手动调用
  2. C/Cpp / #include
  3. word文字中带有数学公式的行间距设置
  4. Ubuntu MTK/RK/AW 编译服务器
  5. Android App层 单独使用SystemProperties
  6. java字符排序规则_java 重写排序规则,用于代码层级排序
  7. php forms 上传更新json_通达OA任意文件上传漏洞详细分析
  8. 磁盘上没有足够的空间完成此操作_【教程】Windows的磁盘分区,两分钟搞定!!...
  9. 小程序分享,获取openid
  10. Divide by three, multiply by two CodeForces - 977D (思维排序)