C++基础——文件操作

文章目录

  • 1 概述
  • 2 文本文件
    • 2.1 写文件
      • 2.1.1 写文件流程
      • 2.1.2 文件打开方式
    • 2.2 读文件
  • 3 二进制文件
    • 3.1 写文件
    • 3.2 读文件

1 概述

程序最基本的操作之一就是文件操作,程序运行时的数据都是临时数据,当程序结束后就不复存在了。通常都是通过文件或其他持久化存储方式存储程序运算完成的数据。
文件类型可分为:

  • 文本文件:文本文件以ascii码存储到计算机中
  • 二进制文件:文件以二进制方式存储在计算机中,难以阅读

操作文件相关的类:

  • ofstream:写操作
  • ifstream:读操作
  • fstream:读写操作

2 文本文件

2.1 写文件

2.1.1 写文件流程

#include <iostream>
#include <fstream>using namespace std;int main() {ofstream out;out.open("./test.txt", ios::out);out << "hello world";out.close();return 0;
}

在这里插入图片描述

如果文件不存在,则会创建一个文件,并写入数据

2.1.2 文件打开方式

对于文件的读写,都需要先打开文件

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

这些方式可以配合使用,采用或运算符。
比如二进制写入 ios::binary | ios::out

2.2 读文件

#include <iostream>
#include <fstream>using namespace std;int main() {ifstream in;in.open("./test.txt", ios::in);if (!in.is_open()) {cout << "open file failed" << endl;return 0;}char buff1[1024] = {0};while (in >> buff1) {cout << buff1 << endl;}in.clear();in.seekg(0, ios::beg);char buff2[1024] = {0};while(in.getline(buff2, sizeof(buff2))) {cout << buff2 << endl;}in.clear();in.seekg(0, ios::beg);string buff3;while (getline(in, buff3)) {cout << buff3 << endl;}in.clear();in.seekg(0, ios::beg);char c;while ((c = in.get()) != EOF) {cout << c;}in.close();return 0;
}

输出

hello
world
hello world
hello world
hello world

读文件操作与写文件操作类似,不过读文件有多种读取方式。
第1种读取到换行、空格等都会结束,所以是两行
后面的三种都能够输出整行。

3 二进制文件

二进制文件存储的是字符编码之后的二进制,可以通过二进制的方式打开文件,进行二进制的读写

3.1 写文件

#include <iostream>
#include <fstream>using namespace std;class Person {
public:char m_Name[64];int m_Age;
};int main() {ofstream out("./test2", ios::out | ios::binary);Person p = {"zhangsan", 23};out.write((const char *) &p, sizeof(p));out.close();
}

也是通过输出流,输出为二进制模式,通过write函数调用来谢二进制数据到文件中
打开文件普通编辑器查看只是一个有很多乱码的文件,使用二进制查看则是16进制表示的二进制数据。

3.2 读文件

#include <iostream>
#include <fstream>using namespace std;class Person {
public:char m_Name[64];int m_Age;
};int main() {ifstream in("./test2", ios::in | ios::binary);if (!in.is_open()) {cout << "test2 open fail" << endl;return -1;}Person p;in.read((char *) &p, sizeof(p));cout << "p.m_Name = " << p.m_Name << endl;cout << "p.m_Age = " << p.m_Age << endl;
}

读文件使用输入流。通过read函数调用,从文件中读取数据,可以使用对象进行读取,需要写入时按照同样的方式写入。

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

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

相关文章

【vue实战项目】通用管理系统:信息列表,信息录入

本文为博主的vue实战小项目系列中的第六篇&#xff0c;很适合后端或者才入门的小伙伴看&#xff0c;一个前端项目从0到1的保姆级教学。前面的内容&#xff1a; 【vue实战项目】通用管理系统&#xff1a;登录页-CSDN博客 【vue实战项目】通用管理系统&#xff1a;封装token操作…

深入理解HTTP协议

一、简介 超文本传输协议&#xff08;英文&#xff1a;HyperText Transfer Protocol&#xff0c;缩写&#xff1a;HTTP&#xff09;是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。 二、协议概述 HTTP是一个客户端终端&#xff08;用…

栈模拟先序后序中序遍历(非递归遍历)

先序遍历&#xff1a; vector<int> preorderTraversal(TreeNode* u) {stack<TreeNode*>stk;vector<int>res;if(unullptr) return res;while(stk.size()||u){if(u){res.push_back(u->val);//遍历当前结点stk.push(u);//记录当前递归层uu->left;//遍历左…

显示Excel功能区或工具栏的方法不少,其中快捷方式最快

Microsoft Excel是Office套件中最复杂的工具之一&#xff0c;它提供了大量功能&#xff0c;其中大部分都是使用工具栏操作的。缺少工具栏使Excel很难完成工作。 如果Excel中没有这些关键元素&#xff0c;你将无法快速完成工作&#xff0c;因此&#xff0c;可以理解的是&#x…

处理机调度与作业调度

处理机调度 一个批处理型作业&#xff0c;从进入系统并驻留在外存的后备队列上开始&#xff0c;直至作业运行完毕&#xff0c;可能要经历如下的三级调度 高级调度 也称为作业调度、长程调度、接纳调度。调度对象是作业 主要功能&#xff1a; 挑选若干作业进入内存 为作业创建…

flutter Running Gradle task ‘assembleDebug‘

flutter Running Gradle task assembleDebug Running Gradle task assembleDebug新问题描述新问题解决方案Running Gradle task ‘assembleDebug’ 用Android Stduio创建Flutter项目的时候,会出现各种问题,踩了一个又一个,最后编译的时候可能会出现一直显示Running Gradle …

在Pycharm中创建项目新环境,安装Pytorch

在python项目中&#xff0c;很多项目使用的各类包的版本是不一致的。所以我们可以对每个项目有专属于它的环境。所以这个文章就是教你如何创建新环境。 一、创建新环境 首先我们需要去官网下载conda。然后在Pycharm下面添加conda的可执行文件。 用conda创建新环境。 二、…

多要素气象环境监测站知识科普

随着工业化和城市化的快速发展&#xff0c;气象环境的影响越来越受到人们的关注。为了更好地保护我们的环境&#xff0c;一款WX-CQ12 多要素气象环境监测站应运而生。这款监测站可以全方位地监测气象环境中的温度、湿度、气压、风速、风向、雨量、太阳辐射等重要要素&#xff0…

Python实现的顺序查找算法

一、算法过程描述&#xff1a; 最基本的查找技术的过程&#xff1a;从表中的第一个记录开始&#xff0c;逐个进行记录的 关键字和给定值比较&#xff0c;若某个记录的关键字和给定值相等&#xff0c;则查找成功&#xff0c;找到所查的记录&#xff1b; 如果直到最后一个记录&am…

vue3高德地图使用,地址搜索,地址逆解析

在vue3项目里使用高德地图 高德地图文档 先在项目的index.html页面里添加一些东西 <script type"text/javascript">window._AMapSecurityConfig {securityJsCode: "xxxxxxxxxxxxx", //高德安全码};</script> <script src"https://…

Python---文件

文件--- 内存中存放的数据在计算机关机后就会消失。要长久保存数据&#xff0c;就要使用硬盘、光盘、U 盘等设备。为了便于数据的管理和检索&#xff0c;引入了“文件”的概念。 一篇文章、一段视频、一个可执行程序&#xff0c;都可以被保存为一个文件&#xff0c;并赋予一个…

@FeignClient本地项目启动调用测试服务地址,并兼容发布测试环境

1.FeignClient对应api接口的使用如下&#xff1a; /*** author ys* description 对外服务接口*/ FeignClient(name "xx-shop", path "/shop", url "${api-third.xx-shop:}") public interface ExterlControllerApi {/*** 获取所有的类型** p…

使用docker-compose优雅部署rocketMQ

使用docker-compose优雅部署RocketMQ 随着市场的发展&#xff0c;越来越多的复杂场景出现在我们日常的开发工作中。随之也越来越多的好的工具&#xff0c;也同步出现在程序员的学习范围清单内。好的工具提高产品性能的同时&#xff0c;也带来了很多安装上的问题&#xff0c;do…

小米的算法部署岗对新手是真的友好

大家好啊&#xff0c;我是董董灿。 自从开始写一些AI行业的岗位介绍&#xff0c;就养成了一个习惯&#xff0c;在上下班的路上经常就会打开某聘瞧一瞧。 导致之前一年不看的某聘认为我要看机会换工作&#xff0c;疯狂给我推猎头&#xff0c;然后电话就进来了。 不堪骚扰的我…

【数据结构】源码角度剖析PriorityQueue

目录 认识 Queue 认识 PriorityQueue PriorityQueue为什么要用二叉堆&#xff1f; PriorityQueue构造方法源码分析 PriorityQueue 的属性 构造方法 JDK1.8传入不可比较的对象 JDK17传入不可比较的对象 传入带有Collection接口的对象 instanceof 关键字 Offer方法分析…

.net core 连接数据库,通过数据库生成Modell

1、安装EF Core Power Tools&#xff1a;打开Vs开发工具→扩展→管理扩展 2、(切记执行这步之前确保自己的代码不存在编写或者编译错误&#xff01;)安装完成后在你需要创建数据库实体的项目文件夹上面单击右键&#xff0c;找到EF Core 工具&#xff08;必须安装扩展之和才会有…

(Ant X6)子组件里的流程图画布无法显示

(Ant X6)子组件里的流程图画布无法显示 问题背景&#xff1a;侧导航页面都是子组件,建模页面的画布无法显示 解决前&#xff1a; 解决后&#xff1a; 解决思路&#xff1a;点击建模菜单时再次加载对应组件 在 Vue 中&#xff0c;每个组件都有一个唯一的 key 属性。当组件的 ke…

vue升级题

不熟悉的&#xff1a; 2&#xff0c; 3.你用过befcoreDetory 吗&#xff1f;清除定时器&#xff0c;第一个和第二个再看一下 实例加载完成是在哪个生命周期--beforecreate 7.父子组件生命周期执行顺序&#xff1f;为什么这么渲染&#xff1f;场景 8.简单描述每个周期具体适…

第二十章总结。。。

20.1线程简介. 20.2创建线程 2.1继承Thread类 Thread 类是java.lang包中的一个类&#xff0c;从这个类中实例化的对象代表线程&#xff0c;程序员启动一个新线程需要建立Thread 实例。Thread类中常用的两个构造方法如下: public Thread():创建一个新的线程对象。 public Thread…

中医诊所/中医馆如何打破发展局限,创新引流获客?

随着社会生活水平不断发展&#xff0c;人们对医疗卫生服务水平的要求也越来越精细化&#xff0c;多样化。中医诊所/中医馆&#xff0c;在与传统服务发展中正在面临着诸多挑战与难题。 传统宣传推广&#xff1a;医疗市场竞争激烈&#xff0c;许多中医诊所、中医馆仍依赖传统的口…