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

文本文件操作

大家好:

        衷心希望各位点赞。

        您的问题请留在评论区,我会及时回答。

文件操作

        程序运行时,产生的数据都是临时数据,程序一旦运行结束都会被释放。通过文件可以将数据持久化。

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

        文件类型分为两种:

        1.文本文件:文件以文本的ASC||码形式存储在计算机中。

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

        操作文件的三大类:

        1.写操作:ofstream

        2.读操作:ifstream

        3.读写操作:fstream

文本文件

写文件

写文件步骤如下:

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 <iostream>
#include <Windows.h>
#include <string>
#include <fstream> // 头文件包含using namespace std;int main(void)
{// 创建流对象ofstream ofs;// 指定打开方式ofs.open("test.txt", ios::out);// 写入内容ofs << "姓名:张三" << endl;ofs << "性别:男" << endl;ofs << "年龄:18" << endl;// 关闭文件ofs.close();system("pause");return 0;
}

运行截图:

 

总结

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

写文件可以利用ofstream,或者fstream

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

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

操作完毕,需要关闭文件

读文件

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

读文件步骤如下:

1.包含头文件

#include<fstream>

2.创建流对象

ifstream ifs;

3.打开文件,判断是否打开成功ifs.is_open

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

4.读数据

4种方式读取

5.关闭文件

ifs.close();

#include <iostream>
#include <Windows.h>
#include <string>#include <fstream> // 头文件包含using namespace std;int main(void)
{// 创建流对象ifstream ifs;// 打开文件,并且判断是否打开成功ifs.open("test.txt", ios::in);if ( !ifs.is_open() ){cout << "文件打开失败" << endl;return 0;}// 读数据// 1、把文件中的数据全部放入buf数据中char buf[1024] = { 0 };while (ifs >> buf){cout << buf << endl;}// 2法char buf[1024] = { 0 };while (ifs.getline(buf, sizeof(buf))){cout << buf << endl;}// 3法string buf;while (getline(ifs, buf)){cout << buf << endl;}// 4法char c;while ((c = ifs.get()) != EOF) // EOF :end of file 文件结束标志{cout << c;}// 关闭文件ifs.close();system("pause");return 0;
}

总结

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

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

close关闭文件

相关文章:

  • 设计模式 —— 设计原则
  • 前端-包管理器
  • MR混合现实情景实训教学系统在军事演练课堂中的教学应用
  • Python+Django+Yolov5路面墙体桥梁裂缝特征检测识别html网页前后端
  • Java设计模式—备忘录模式(快照模式)
  • 【问题分析】InputDispatcher无焦点窗口ANR问题【Android 14】
  • 探索SOCKS5代理、代理IP、HTTP与网络安全
  • C++:sizeof关键字(7)
  • 【论文阅读】ELA: Efficient Local Attention for Deep Convolutional Neural Networks
  • Linux基础篇:解析Linux命令执行的基本原理
  • 淘宝商品采集API商品详情数据接口商品搜索列表API接口
  • 括号生成(回溯+剪枝)
  • ip地址改变导致nacos无法登录的解决方法
  • 查询优化-提升子查询-UNION类型
  • 国内IP切换软件:解锁网络世界的新钥匙
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 【comparator, comparable】小总结
  • Codepen 每日精选(2018-3-25)
  • Docker下部署自己的LNMP工作环境
  • gcc介绍及安装
  • gf框架之分页模块(五) - 自定义分页
  • Java方法详解
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • 阿里云前端周刊 - 第 26 期
  • 欢迎参加第二届中国游戏开发者大会
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 为什么要用IPython/Jupyter?
  • 我与Jetbrains的这些年
  • 小程序 setData 学问多
  • 译自由幺半群
  • 用mpvue开发微信小程序
  • (23)Linux的软硬连接
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET MVC第五章、模型绑定获取表单数据
  • .net6使用Sejil可视化日志
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比
  • .NET下的多线程编程—1-线程机制概述
  • .net专家(张羿专栏)
  • .stream().map与.stream().flatMap的使用
  • @ModelAttribute使用详解
  • @Resource和@Autowired的区别
  • [ 手记 ] 关于tomcat开机启动设置问题
  • [.net 面向对象程序设计进阶] (19) 异步(Asynchronous) 使用异步创建快速响应和可伸缩性的应用程序...
  • []Telit UC864E 拨号上网
  • [2016.7.test1] T2 偷天换日 [codevs 1163 访问艺术馆(类似)]
  • [ANT] 项目中应用ANT
  • [codevs] 1029 遍历问题
  • [Design Pattern] 工厂方法模式
  • [go] 迭代器模式
  • [hdu 3065] 病毒侵袭持续中 [AC自动机] [病毒特征码匹配]