【C++】10___文件操作

目录

一、文本文件---写文件

 二、文本文件---读文件

 三、二进制文件---写文件

 四、二进制文件---读文件


一、文本文件---写文件

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

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

文件类型分两类:

  • 文本文件:文件以文本的ASCII码形式存储在计算机中
  • 二进制文件:文件以文本的二进制形式存储在计算机中,一般不能直接读懂

操作文件的三大类:

  • ofstream:写操作
  • ifstream:读操作
  • fstream:读写操作
文件的打开方式
ios::in 为读文件而打开文件
ios::out为写文件而打开文件
ios::ate初始位置:文件尾
ios::app追加方式写文件
ios::trunc如果文件存在先删除,再创建
ios::binary二进制方式
文件打开方式可以配合使用,利用 | 操作符

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

 代码示例

#include<iostream>
using namespace std;
#include<fstream>  //包含头文件

void test(){
	ofstream ofs;  //创建流对象
	ofs.open("text.txt",ios::out); // 指定打开方式
	ofs<<"啦啦啦啦德玛西亚"<<endl; // 写内容
	ofs.close(); // 关闭文件
}
int main(){
	test();
	return 0;
}

 展示效果

 二、文本文件---读文件

代码示例

#include<iostream>
using namespace std;
#include<fstream>  //包含头文件

void test(){
	ifstream ifs;  //创建流对象
	ifs.open("text.txt",ios::in); 
	
	if(!ifs.is_open()){
		cout<<"文件打开失败"<<endl;
		return ;
	}
	
	//读文件
	//方式一
//	char r;
//	while((r = ifs.get()) != EOF){
//		cout<<r;
//	}

	//方式二
//	string buf;
//	while(getline(ifs,buf)){
//		cout<<buf<<endl;
//	}

	//方式三
//	char buf[1024] = { 0 };
//	while(ifs>>buf){
//		cout<<buf<<endl;
//	}

	//方式四
	char buf[1024] = { 0 };
	while(ifs.getline(buf,sizeof(buf))){
		cout<<buf<<endl;
	}
	
	ifs.close(); // 关闭文件
}
int main(){
	test();
	return 0;
}

 三、二进制文件---写文件

 代码示例

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

class person{
	
public:
	char m_Name[64];
	int m_age;
};

void test(){
	ofstream ofs;
	ofs.open("person.txt",ios::out | ios::binary);
	person p = {"张三",18};
	ofs.write((const char*)&p,sizeof(p));
	ofs.close();
	
}

int main(){
	test();
	return 0;
}

 四、二进制文件---读文件

代码示例

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

class person{
public:
	char m_Name[64];
	int m_age;
};

void test(){
	
	ifstream ifs;
	ifs.open("person.txt",ios::in | ios::binary);
	if(!ifs.is_open()){
		cout<<"文件打开失败"<<endl;
		return;
	}
	person p;
	ifs.read((char*)&p,sizeof(person));
	cout<<"姓名:"<<p.m_Name<<"   年龄:"<<p.m_age<<endl;
	ifs.close();
}

int main(){
	test();
	return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

uni-app之web-view组件 postMessage 通信【跨端开发系列】

&#x1f517; uniapp 跨端开发系列文章&#xff1a;&#x1f380;&#x1f380;&#x1f380; uni-app 组成和跨端原理 【跨端开发系列】 uni-app 各端差异注意事项 【跨端开发系列】uni-app 离线本地存储方案 【跨端开发系列】uni-app UI库、框架、组件选型指南 【跨端开…

2024.12.14 TCP/IP 网络模型有哪几层?

2024.12.14 TCP/IP 网络模型有哪几层? 2024.12.14 今天周六 看到大伙都在考六级&#xff0c;我来复盘小林coding的计算机网络的知识点&#xff1a; TCP/IP 网络模型有哪几层? 问大家&#xff0c;为什么要有 TCP/IP 网络模型? 对于同一台设备上的进程间通信&#xff0c;有…

华为自反ACL实验

一、实验背景 做这个实验的原因是最近公司里上了三台小程序服务器&#xff0c;由于三台服务器的端口都映射出去了&#xff0c;领导要求A网段的三台服务器不能访问内网B&#xff0c;C网段&#xff0c;同时B、C网段内网用户可以访问A段的94、95、96服务器&#xff1b; 也就是PC4\…

RV1126预编译模型:减少加载时间,提升推理速度的最佳实践

1 介绍 本文将以 MobileNetV2 模型为例&#xff0c;详细介绍如何在 RV1126 平台上完成预编译工作&#xff0c;帮助开发者高效地部署深度学习模型。通过这篇教程&#xff0c;您将了解如何在 RV1126 上进行环境配置、模型编译、以及如何将预编译后的模型进行推理操作。 2 RV112…

使用html和JavaScript实现一个简易的物业管理系统

码实现了一个简易的物业管理系统&#xff0c;主要使用了以下技术和功能&#xff1a; 1.主要技术 使用的技术&#xff1a; HTML: 用于构建网页的基本结构。包括表单、表格、按钮等元素。 CSS: 用于美化网页的外观和布局。设置字体、颜色、边距、对齐方式等样式。 JavaScript…

VMware虚拟机 Ubuntu没有共享文件夹的问题

在虚拟机的Ubuntu系统中&#xff0c;共享文件目录存放在 mnt/hgfs 下面&#xff0c;但是我安装完系统并添加共享文件后发现&#xff0c;在mnt下连/hgfs目录都没有。 注意&#xff1a;使用共享文件目录需要已安装VMtools工具。 添加共享文件目录 一&#xff1a;在超级用户下 可…

云开发实战教程:手把手教你高效开发应用

声明&#xff1a;本文仅供实践教学使用&#xff0c;没有任何打广告成分 目录 1.引言 2.云开发 Copilot介绍 云开发 Copilot 的功能与特点 3.环境准备 步骤一登录账号 步骤二新建环境 4.开发实践 4.1AI 生成低代码应用 4.2AI 生成低代码页面/区块 4.3AI 优化低代码组件…

聊聊Oracle自适应查询优化

成也AQO败也AQO 因为工作的原因&#xff0c;我们接触到的客户大部分是金融和运营商行业&#xff0c;这些客户有个最大的特点是追求稳定&#xff0c;对于使用数据库新特性持保守的态度&#xff0c;不会轻易尝试某些可能会导致生产系统不稳定的新特性。上线前通常都会将一些新特…

纯CSS实现文本或表格特效(连续滚动与首尾相连)

纯CSS实现文本连续向左滚动首尾相连 1.效果图&#xff1a; 2.实现代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, init…

深度学习物体检测之YOLOV5源码解读

V5比前面版本偏工程化,项目化,更贴合实战 一.V5版本项目配置 (1)整体项目概述 首先github直接查找yolov5&#xff0c;下载下来即可。在训练时&#xff0c;数据是怎么处理的&#xff1f;网络模型架构是怎么设计的(如各层的设计)&#xff1f;yolov5要求是大于python3.8与大于等…

uniapp h5 js设置监听:超时未操作返回首页(全局只监听一次,可设置监听事件+检查时间+超时时长)

功能实现: 可自定义超时时长,检查时间超时后跳转首页(/pages/home/index/index); 如果在首页,则不进行跳转监控状态下, 用户有任意操作(包括但不限于点击,滑动,跳转页面等),则重置监听,重新开始算时间超时方法及逻辑封装到单独的js文件中 全局只需在app.vue创建监听,其他页面无…

MAC M3电脑在idea上搭建Spark环境并跑通第一个程序

我的电脑是Macbook Pro&#xff0c;最近在学习Spark&#xff0c;想要在idea里搭建Spark环境&#xff0c;为之后的Spark编程作准备。下面是在MAC版本的idea里配置Spark环境。 1. 准备工作 1.安装 JDK 确保Mac 上已经安装了 JDK 8 或更高版本。 可通过 java -version 查看是否…

展柜设计公司平面布置小程序的分析与设计springboot+论文源码调试讲解

3系统的需求分析 需求分析的任务是通过详细调查展柜设计公司平面布置小程序软件所需的对象&#xff0c;充分了解系统的工作概况&#xff0c;明确功能实现的各种需求&#xff0c;然后在此基础上确定系统的功能。系统必须充分考虑今后可能的扩充和改变。 3.1可行性分析 通过对…

用人话讲计算机:Python篇!(十二)正则运算+re模块

目录 一、正则表达式 &#xff08;1&#xff09;什么是正则表达式 &#xff08;2&#xff09;它的结构及使用 示例&#xff1a; 1.字符 . &#xff08;←这里有个小点哦&#xff09; 2.字符 | 3.字符 [ ] 4.字符^ 5.字符\d &#xff08;3&#xff09;补充&#xff…

C# 与PLC数据交互

点击跳转下载地址 点击跳转胡工科技官网

康佳Android面试题及参考答案(多张原理图)

JVM 内存分布和分代回收机制是什么? JVM 内存主要分为以下几个区域。 堆(Heap)是 JVM 管理的最大的一块内存区域,主要用于存放对象实例。所有线程共享堆内存,在堆中又分为年轻代(Young Generation)和老年代(Old Generation)。年轻代又分为 Eden 区和两个 Survivor 区(…

家校通小程序实战教程10部门管理前后端连接

目录 1 加载后端的数据2 为什么不直接给变量赋值3 保存部门信息4 最终的效果5 总结 现在部门管理已经完成了后端功能和前端开发&#xff0c;就需要在前端调用后端的数据完成界面的展示&#xff0c;而且在录入部门信息后需要提交到数据库里&#xff0c;本篇我们介绍一下前后端如…

【Java】链接数据库简介

JDBC基本原理 JDBC 提供了一套通用的接口&#xff0c;允许 Java 程序与不同类型的数据库进行交互。 JDBC 是 Java 提供的一种用于与数据库通信的 API&#xff08;应用程序编程接口&#xff09;&#xff0c;定义了 Java 程序如何与数据库进行连接、执行查询、操作数据等。JDBC…

企业级包管理器之 monorepomultirepo (8)

在企业级项目开发中&#xff0c;面对多个项目的管理&#xff0c;monorepo 和 multirepo 是两种常见的代码管理方案&#xff0c;它们各有特点与优劣&#xff0c;下面我们来详细了解一下。 一、基本概念 monorepo&#xff1a;“mono”在英语中有“单一的、单独的”之意&#xf…

SQLite 数据库学习

0.引言 SQL, 全名是 Structured Query Language, 中文翻译是"结构化查询语言"。它是一种专门用来与数据库交互的语言。简单来说&#xff0c;SQL就是跟数据库"对话"的一种语言。 1.install sudo apt update sudo apt install sqlitebrowser这是一个开源的…