【C++学习】文件操作

news2024/11/19 7:24:26

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

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

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

文本类型分为两种:

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

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

操作文件三大类:

1.  ofstream  :写操作

2.  ifstream   :读操作

3.  fstream    :读写操作

C++文件操作(详解)_Jemery-an的博客-CSDN博客

文本文件

写文件

写文件步骤如下:

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<string>
#include<fstream>
using namespace std;
//文本文件  写文件
void test01()
{
	//1.包含头文件 fstream
	//2.创建流对象
	ofstream ofs;
	//3.指定打开方式
	ofs.open("test.txt", ios::out);//如果没有指定路径,默认就会与该代码放在同一文件夹下
	//4.写内容
	ofs << "姓名:张三" << endl;
	ofs << "性别:男" << endl;
	ofs << "年龄:18" << endl;
	//5.关闭文件
	ofs.close();
}
int main()
{
	test01();
	system("pause");
	return 0;
}

 读文件

读文件步骤如下:

1.包含头文件   #include<fstream>

2.创建流对象   ifstream ifs;

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

4.写数据         四种方式读取

5.关闭文件      ifs.close();

 

#include<iostream>
#include<string>
#include<fstream>
using namespace std;
//文本文件  写文件
void test01()
{
	//1.包含头文件 fstream
	//2.创建流对象
	ifstream ifs;
	//3.打开文件   并且判断是否打开成功
	ifs.open("test.txt", ios::in);
	if (!ifs.is_open())//ifs.is_open返回bool类型
	{
		cout << "文件打开失败" << endl;
	}
	//4.读数据
	/*1*/
	char buf[1024] = {0};//把文件中的数据全放到字符数组中
	while (ifs >> buf)//利用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)
	{
		cout << c;
	}*/
	//5.关闭文件
	ifs.close();
}
int main()
{
	test01();
	system("pause");
	return 0;
}

二进制文件

写文件

#include<iostream>
#include<string>
#include<fstream>
using namespace std;
//二进制文件  写文件
class person 
{
public:
	char m_name[64];//注意,C++中用string会出现一些问题
	//string本质是类
	int m_age;
};
void test01()
{
	//1.包含头文件  fstream
	//2.创建流对象
	ofstream ofs("person.txt", ios::out | ios::binary);
	//3.打开文件
	//ofs.open("person.txt", ios::out | ios::binary);
	//4.写文件
	person p={"张三",18};
	ofs.write((const char*)&p,sizeof(person));
}
int main()
{
	test01();
	system("pause");
	return 0;
}

 二进制文件会有一些乱码,用二进制的方式读就可以了。

总结:文件输出流对象 可以通过write函数,以二进制方式写数据。

读文件

#include<iostream>
#include<string>
#include<fstream>
using namespace std;
//二进制文件  读文件
class person
{
public:
	char m_name[64];
	int m_age;
};
void test01()
{
	//1.包含头文件
	//2.创建流对象
	ifstream ifs;
	//3.打开文件 判断文件是否打开成功
	ifs.open("person.txt", ios::in | ios::binary);
	if (!ifs.is_open())
	{
		cout << "文件打开失败" << endl;
		return;
	}
	//4.读文件
	person p;
	ifs.read((char*)&p, sizeof(person));
	cout << "姓名:"<<p.m_name<<"  年龄:"<<p.m_age << endl;
	//5.关闭文件
	ifs.close();
	
}
int main()
{
	test01();
	system("pause");
	return 0;
}

总结:通过read读数据

ifs.read((char*)&p, sizeof(person));

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/492274.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

低代码,一招制敌,解决职场人的的办公难题

“站在巨人的肩膀上让你事半功倍”&#xff0c;本文阐释如何使用低代码工具成倍提高生产力&#xff0c;不管是个人还是企业&#xff0c;值得一看&#xff0c;都将受益。 作为一个卑微的打工人&#xff0c;以下任何一个场景都会让我头皮发麻&#xff1a; 领导要你30分钟内汇总…

Excel高频 (IF,Countif,Sum,rank,max,min) 函数使用教程

工作中经常会用到IF判断&#xff0c;COUNTIF按条件统计个数&#xff0c;SUM求和&#xff0c;RANK排名次&#xff0c;MAX求最大,MIN求最小&#xff0c;AVERAGE求平均等函数&#xff0c;读书屋办公教程网将通过这篇文章采用图文结合的形式详细讲解Excel这几个函数的用法。 一、 判…

2023 年 3 月青少年机器人技术等级考试理论综合试卷(二级)

2023 年 3 月青少年机器人技术等级考试理论综合试卷&#xff08;二级&#xff09; 一、单选题(共 30 题&#xff0c;共 60 分) 1.关于后轮驱动车说法正确的是&#xff1f;&#xff08; &#xff09; A. 发动机放在车的后部 B.起步加速比前轮驱动车更好 C.传动效率比前轮驱动车高…

iview-admin首页的图表数据渲染问题

iview-admin的首页有几个图表&#xff0c;应该是作者自己封装的&#xff0c;有个问题是在mounted时&#xff0c;从后台获取数据&#xff0c;应该把图表根据数据重新渲染一下。 <chart-bar id"myChart" style"height: 260px;" :value"barData"…

操作系统基本原理

目录 第二章、操作系统基本原理1、操作系统概述2、进程管理2.1、进程的状态2.2、前趋图2.3、进程的同步与互斥2.4、PV操作2.5、PV操作题目2.6、PV操作与前驱图2.7、死锁问题2.8、死锁的预防与避免&#xff08;银行家算法&#xff09; 3、存储管理3.1、分区存储组织3.2、页式存储…

vue如何将图片转换为webp并前端展示

1. 首先把图片转换为webp格式 1.1 可以进入cmd后&#xff0c;pip安装pillow pip install Pillow --trusted-host mirrors.cloud.tencent.com1.2 save为webp格式&#xff0c;即可得到webp格式图片 ... from PIL import Image img Image.open(background1.jpeg).convert(RGB…

干货分享|一款让企业知识管理变得简单高效的工具软件

互联网发展到下半场&#xff0c;很多企业都开始进行数字化转型&#xff0c;在这个过程中&#xff0c;很多企业都忽视了极为重要的一点——企业的知识管理。如今信息化的时代&#xff0c;可以说企业的知识管理是引领企业数字化转型、进行创新的关键。 企业知识管理的实质就是对…

后端Springboot框架搭建APi接口开发(第三章末)

前两章节讲述了如何通过APi接口实现对数据库的查询操作 这章主要讲述&#xff0c;Stringboot对数据库数据的查询、新增、修改、删除操作 第一节&#xff1a;数据库查询 首先编写UserMapper.xml。定义SQl语句 文件结构&#xff1a;demo\src\main\java\com\example\demo\mapp…

蓝牙耳机什么牌子的好用?测评员分享目前最值得入手的蓝牙耳机

蓝牙耳机的出现让我们日常生活更加便利&#xff0c;与有线耳机相比少了束缚&#xff0c;而随着蓝牙耳机市场的成熟&#xff0c;涌现了超多品牌&#xff0c;让大家不知道蓝牙耳机什么牌子的好用&#xff0c;我这几年已经测评过50多款蓝牙耳机&#xff0c;今天将要分享目前最值得…

【类和对象】(上)

系列文章目录 文章目录 系列文章目录&#x1f451; 前言&#x1f451; 一、什么是类&#xff0c;什么是对象&#x1f451; 二、类的引入&#x1f451; 三、类的定义&#x1f451;三、1.类的两种定义方式&#xff1a; &#x1f451; 四、类的内存计算&#x1f451;五、this指针&…

Flutter学习之旅 - 页面布局Padding、Column、Flex、Expanded

文章目录 Padding线性布局组件(Column和Row)水平布局组件(Row)垂直布局组件(Column) 弹性布局(Flex&Expanded)ExpandedFlex 达到父元素的尺寸 Padding class MyHomePage extends StatelessWidget {const MyHomePage({Key? key}) : super(key: key);overrideWidget build(…

ATA-2000系列高压放大器介绍

ATA-2000系列是一款理想的可放大交、直流信号的高压放大器。最大差分输出1600Vp-p(800Vp)高压&#xff0c;可以驱动高压型负载。电压增益数控可调&#xff0c;一键保存常用设置&#xff0c;为您提供了方便简洁的操作选择&#xff0c;同时双通道高压放大器输出还可同步调节&…

FastJson序列化导致的 “$ref“

前言&#xff1a; 刚转后端没多久&#xff0c;在通过RPC调用其他组的服务的时候&#xff0c;其他组对接的同学说&#xff0c;你的入参是有问题的&#xff0c;然后他把入参发我&#xff0c;类似于下面的 json&#xff1a; {"addressMO": {"roomNumber": &…

795. 前缀和(C++和Python3)——2023.5.5打卡

文章目录 QuestionIdeasCode Question 输入一个长度为 n 的整数序列。 接下来再输入 m 个询问&#xff0c;每个询问输入一对 l,r 。 对于每个询问&#xff0c;输出原序列中从第 l 个数到第 r 个数的和。 输入格式 第一行包含两个整数 n 和 m 。 第二行包含 n 个整数&#…

哪种类型蓝牙耳机佩戴最舒服?公认佩戴舒适度高的蓝牙耳机

随着都市人生活水准的提高&#xff0c;人们开始享受起生活&#xff0c;观察身边的事物&#xff0c;佩戴蓝牙耳机能够满足自身基本通勤需求&#xff0c;现阶段不少蓝牙耳机质量越来越好&#xff0c;并且在功能、体验、技术上都具有相当的优势&#xff0c;性价比极高&#xff0c;…

Window下的反弹shell

什么是正向shell? 正向shell&#xff1a;控制端主动发起连接请求去连接被控制端&#xff0c;中间网络链路不存在阻碍。 反向shell&#xff1a;被控制端主动发起连接去请求连接控制&#xff0c;通常被控端由于防火墙受限制、权限不足、端口被占用等问题导致被控端不能正常接收…

短视频矩阵管理营销系统.源代码

一、短视频矩阵系统一般拥有以下几个主要功能&#xff1a; 1. 视频拍摄和剪辑功能&#xff0c;让用户轻松制作和发布短视频内容。 2. 视频分发和推广功能&#xff0c;矩阵管理发布、将制作好的短视频内容推送到各大短视频平台&#xff0c;实现效果最大化。 3. 数据监测和分析…

计算机三级嵌入式系统开发 知识点笔记

目录为搜索词&#xff0c;详情看每一节后图片 思维导图已上传&#xff0c;点击这里下载 嵌入式系统开发 全部章节图片第一章 嵌入式系统概论1.1SoCIP核 1.21.2.1ASCIIGB2312GB18030UTF8UTF16超文本字符形状两种描述方法 1.2.2数字图像 1.2.3音频 1.3传输介质分为 有线通信 和 无…

Windows下安装MySQL数据库+Navicat (从完全卸载到安装使用图文详细步骤,附安装包)

目录 第一章&#xff1a;如何完全卸载干净mysql教程&#xff08;三个步骤完全卸载&#xff09;1&#xff09;步骤一&#xff1a;卸载程序2&#xff09;步骤二&#xff1a;删除文件3&#xff09;步骤三&#xff1a;删除注册表信息 第二章&#xff1a;下载软件两种方式1&#xff…

架构师日记-深入理解软件设计模式 | 京东云技术团队

作者&#xff1a;京东零售 刘慧卿 一 设计模式与编程语言 1.1 什么是设计模式 设计模式&#xff08;Design pattern&#xff09; &#xff1a;由软件开发人员在软件开发中面临常见问题的解决方案&#xff0c;是经过长时间的试验积累总结出来的&#xff0c;它使设计更加灵活和…