首页 > 其他分享 >23_文件操作

23_文件操作

时间:2023-10-16 12:23:10浏览次数:29  
标签:文件 二进制 23 int ios ofs 操作 include

文件操作

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

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

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

文件类型分为两种:

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

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

操作文件的三大类:

​ 1. ofstream: 写操作

​ 2.ifstream: 读操作

​ 3.fstream:读写操作

写文件

image-20231015221234988

image-20231015221259881

image-20231015221357595

#include<iostream>
#include<fstream>

using namespace std;

int main()
{
	ofstream ofs;
	ofs.open("test.txt", ios::out);

	ofs << "姓名: 张三" << endl;
	ofs << "性别: 男" << endl;
	ofs << "年龄: 19" << endl;

	ofs.close();

	return 0;
}

读文件

image-20231015222953616

#include<iostream>
#include<fstream>
#include <string>

using namespace std;

int main()
{
	ifstream ifs;

	ifs.open("test.txt", ios::in);

	if (!ifs.is_open())
	{
		cout << "文件打开失败!" << endl;
		return 0;
	}

	//读数据
	//第一种 
	/*char buf[1024] = { 0 };
	while (ifs >> buf)
	{
		cout << buf << endl;
	}*/

	//第二种 逐行读
	/*char buf[1024] = { 0 };
	while (ifs.getline(buf, sizeof(buf)))
	{
		cout << buf << endl;
	}*/

	//第三种 全部读
	/*string buf;
	while (getline(ifs, buf))
	{
		cout << buf << endl;
	}*/

	//第四种 逐个字符读
	char c;
	while ((c = ifs.get()) != EOF) //EOF 文件尾部
	{
		cout << c;
	}

	ifs.close();

	return 0;
}

二进制文件

以二进制的方式对文件进行读写操作

打开方式要指定为ios::binary

写文件

二进制方式写文件主要利用流对象调用成员函数write

函数原型: ostream& write(const char * buffer,int len);

参数解释: 字符指针buffer指向内存中一段存储空间。len是读写的字节数

#include<iostream>
#include<fstream>
using namespace std;

class Person
{
public:
	char m_Name[64];
	int m_Age; 
};

int main()
{
	ofstream ofs("person.txt", ios::out | ios::binary); //二进制方式写文件
	//ofs.open("person.txt", ios::out | ios::binary);
	Person p = { "张三", 18 };
	ofs.write((const char*)&p, sizeof(Person));
	ofs.close();
	return 0;
}

读文件

二进制方式读文件主要利用流对象调用成员函数read

函数原型: istream& read(char *buffer,int len);

参数解释: 字符指针buffer指向内存中一段存储空间。len是读写的字节数

#include <iostream>
#include<fstream>

using namespace std;

class Person
{
public:
	char mName[64];
	int mAge;
};

int main()
{
	ifstream ifs("person.txt", ios::in | ios::binary);
	if (!ifs.is_open())
	{
		cout << "打开文件失败" << endl;
		return 0;
	}
	Person p;
	ifs.read((char*)&p, sizeof(Person));

	cout << p.mName << ", " << p.mAge << endl;
	ifs.close();
	return 0;
}

标签:文件,二进制,23,int,ios,ofs,操作,include
From: https://www.cnblogs.com/mzx233/p/17767085.html

相关文章

  • MASA MAUI 预览Office文件
    目录背景介绍1、新建MAUIBlazor项目2、创建OfficeViewer.razor组件3、使用安卓模拟器运行4、兼容iOS总结背景接到一个在Maui中预览Office文件的需求,包含excel、word、PDF三种常见的文件,经过技术选型,最后选择了微软原生支持的office在线预览Api,原因是此技术方案简单、跨平台。在......
  • Linux 中find命令 查找一类文件并统计这类文件总的大小
     001、(base)[b20223040323@admin1NTlibrary]$findnt.01*|xargsdu-sch##查找一类文件,并统计总的大小,-c表示总计76Mnt.01.nhd1.7Mnt.01.nhi797Mnt.01.nhr50Mnt.01.nin42Mnt.01.nnd168Knt.01.nni17Mnt.01.nog2.8Gnt.01......
  • Java上传大文件实现方法
    简介在开发过程中,我们经常会遇到需要上传大文件的需求。本文将教会你如何用Java实现上传大文件的功能。整体流程首先,让我们来看一下实现上传大文件的整体流程。下面是一个流程表格:步骤 描述1 创建一个文件上传表单2 在后端编写一个接收上传文件的控制器3 将上传的文件保存到服务......
  • BitBake使用攻略--BitBake的语法知识二(转载自https://www.cnblogs.com/chegxy/archive
    目录写在前面1.BitBake中的任务2.任务配置2.1依赖2.1.1内部任务间的依赖2.1.2不同菜谱下的任务间依赖2.1.3运行时态下的依赖2.1.4递归依赖2.1.5任务间的依赖2.2事件2.3校验和3.ClassExtensionMechanism 写在前面这是《BitBake使用攻略》系......
  • 23/10/14 模拟赛总结
    时间安排7:40-7:50看题。7:50-8:50A题看了一会意识到是并查集,但是我没有发现只需输出亮着的魔法灯的个数模2意味着什么,直接统计了个数,于是被1操作给卡了。想了很长时间才发现只需维护奇偶就可以。8:50-10:00写了个B的爆搜,同时输出了方案。通过几个样例的最优解......
  • 23/10/15 模拟赛总结
    时间安排7:50-8:00看题,怎么一分都不会。8:00-9:00脑瘫了,A题随便跑个dij就能过我想了半天不会处理,最后还是猜出来可能要建个超级源点,没想到过了大样例。9:00-10:40B题貌似可做,手模了几组样例,好像会了。为了验证想法写了个爆搜又造了几个小数据,做法应该是正确的,直接......
  • 2023香山杯
    2023香山杯move一眼栈溢出,然后三次栈迁移。expfromtoolsimport*context(os='linux',arch='amd64',log_level='debug')p,e,libc=load("./pwn")pop_rdi=0x401353ret=0x40101abss=0x4050A0leave_ret=0x40124bread=0x401230pop_rbp=0x4011......
  • 23.10.16
    树的操作:1、树的构建Nodebuild(Nodep,int&k,strings){if(s[k]=='#'){k++;returnNULL;}p=newnode();p->ch=s[k++];p->lc=build(p->lc,k,s);p->rc=build(p->rc,k,s);returnp;}用字......
  • 前台端分离 技术架构 系统架构图 20231016
       ......
  • 获取目录下所有文件
    importosdefget_current_dir_file_list(dir_path):"""递归获取指定目录下的所有文件:paramdir_path:要获取的目录(绝对路径):return:包含所有文件绝对路径的列表"""result=[]#获取当前文件夹下的所有文件和文件夹file_list=os......