当前位置: 首页 > news >正文

第十九章 文件操作

程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放

通过文件可以将数据持久化

C++中对文件操作需要包含头文件 < fstream >

文件类型分为两种:

  1. 文本文件 - 文件以文本的ASCII码形式存储在计算机中

  2. 二进制文件 - 文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们

操作文件的三大类:

  1. ofstream:写操作

  2. ifstream: 读操作

  3. fstream : 读写操作

一、文本文件

1、写文件

写文件步骤如下:

  1. 包含头文件

    #include <fstream>

  2. 创建流对象

    ofstream ofs;

  3. 打开文件

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

  4. 写数据

    ofs << "写入的数据";

  5. 关闭文件

    ofs.close();

文件打开方式:

打开方式解释
ios::in为读文件而打开文件
ios::out为写文件而打开文件
ios::ate初始位置:文件尾
ios::app追加方式写文件
ios::trunc如果文件存在先删除,再创建
ios::binary二进制方式

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

例如:用二进制方式写文件 ios::binary | ios:: out

示例:

 #include <fstream>​void test01(){ofstream ofs;ofs.open("test.txt", ios::out);​ofs << "姓名:张三" << endl;ofs << "性别:男" << endl;ofs << "年龄:18" << endl;​ofs.close();}​int main() {​test01();​system("pause");​return 0;}

总结:

  • 文件操作必须包含头文件 fstream

  • 读文件可以利用 ifstream ,或者fstream类

  • 打开文件时候需要指定操作文件的路径,以及打开方式

  • 利用<<可以向文件中写数据

  • 操作完毕,要关闭文件

2、读文件

读文件与写文件步骤相似,但是读取方式相对于比较多

读文件步骤如下:

  1. 包含头文件

    #include <fstream>

  2. 创建流对象

    ifstream ifs;

  3. 打开文件并判断文件是否打开成功

    ifs.open("文件路径",打开方式);

  4. 读数据

    四种方式读取

  5. 关闭文件

    ifs.close();

示例:

 #include <fstream>#include <string>void test01(){ifstream ifs;ifs.open("test.txt", ios::in);​if (!ifs.is_open()){cout << "文件打开失败" << endl;return;}​//第一种方式//对于ifs>>buf流输入方式存取,其原则是当碰见空格之后,就结束当前读取,所以想要读取完文本内容,就必须借助while,当没有字符读入时结束文本读取。//char buf[1024] = { 0 };//while (ifs >> buf)//{//  cout << buf << endl;//}​//第二种//对于ifs.getline读取方法,和getline全局函数类似。也是按行读取,并且当遇到‘\n’之后,结束当前行读取。直到没有数据读取就结束当前文本读取。(注:读取的时候也会将空格读入数组,在提取数据的时候,就需要指定关键信息存取)//char buf[1024] = { 0 };//while (ifs.getline(buf,sizeof(buf)))//{//  cout << buf << endl;//}​//第三种//对于全局函数getline的用法,由于该函数默认是一行一行的读取,所以需要while循环来读取txt文本的所以内容,当遇到‘\n’,标志读取该行结束。当读取不到任何字符的时候就返回false,可用于判断文件是否结束//string buf;//while (getline(ifs, buf))//{//  cout << buf << endl;//}​//第四种:一次读取一个字符char c;while ((c = ifs.get()) != EOF){cout << c;}​ifs.close();​​}​int main() {​test01();​system("pause");​return 0;}

总结:

  • 读文件可以利用 ifstream ,或者fstream类

  • 利用is_open函数可以判断文件是否打开成功

  • close 关闭文件

http://www.lryc.cn/news/198041.html

相关文章:

  • 防火墙管理工具增强网络防火墙防御
  • 34 机器学习(二):数据准备|knn
  • 企业工厂车间台式电脑经常有静电导致开不开机,如何彻底解决?
  • 【数之道 05】走进神经网络模型、机器学习的世界
  • C现代方法(第7章)笔记——基本类型
  • ON DUPLICATE KEY UPDATE 导致自增ID跳跃式增长
  • python学习笔记5-堆
  • 【微服务 SpringCloud】实用篇 · Eureka注册中心
  • WebSocket学习笔记
  • centos 内核对应列表 内核升级 linux
  • 如何判断a类b类c类ip地址
  • SNAP对Sentinel-1预处理
  • GEE案例——指定区域纯净森林提取分析(红和近红外波段)阈值法提取森林面积
  • JavaScript从入门到精通系列第二十一篇:JavaScript中的原型对象详解
  • app.json: [“usingComponents“][“van-icon“]: “@vant/weapp/icon/index“ 未找到
  • Kotlin中循环语句
  • Java String之正则表达式
  • Kotlin 协程再探之为什么使用协程反而更慢了?
  • Hadoop3教程(十六):MapReduce中的OutputFormat
  • 通过表查询 sm37 排程运行情况 JOB 数据保存在表TBTCP 和 TBTCO中
  • append_ocr_trainf
  • 小程序原生代码转uniapp
  • 云原生微服务 第五章 Spring Cloud Netflix Eureka集成负载均衡组件Ribbon
  • 七大排序 (9000字详解直接插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序)
  • 一、nginx配置
  • win32汇编-LEA指令是将一个内存地址加载到一个寄存器中
  • leetcode做题笔记189. 轮转数组
  • 数据库第七章作业
  • 使用服务器训练模型的注意事项
  • Linux性能优化--性能追踪3:系统级迟缓(prelink)