论c++中的文件操作(竞赛必看)通俗易懂

article/2025/9/25 23:19:25

Hello,秋名山码神又回来了,都坐好了,码神发车了,基操勿6。
今天我们来看c++中的文件操作,这可谓是竞赛中的重中之重,因为如果你在竞赛中不使用文件操作的话,爆零是绝对的了,我当年一块比赛的同学第一天就因为这个而爆零,好了,话不多说,开始正题:
首先我们来讲文本文件的操作编程(竞赛中基本都是):
相信大家都有一个疑问,内存中运行的程序是怎么和磁盘上的文件打交道的呢?
上图:
在这里插入图片描述

1.竞赛中常用的文件操作:stream流文件

#include<iostream>
#include<fstream>
using namespace std;
ifstream fin("ab.in");
ofstream fout("ab.out");
int A,B;
int main()
{fin>>A>>B;fout<<A+B;return 0;
}
  1. 程序 3 包含了头文件fstream,即文件流。f为“file”的缩写,,傻眼了吧,file是文件的意思
  2. 5 重定向了一个输入流的文件,初始化指向文本文件“ab.in"
  3. 同上6 重定向了一个输出流的文件,初始化指向文本文件”ab.out"
  4. fin,与fout,分别表示上图中的输入,输出缓存区

注意:
fin和fout只是变量名,你可以任意命名,比如:f1,f2之类的
OI比赛中要求数据文件不要带目录路径,默认与程序在同一文件夹里

可能大家也发现了,我没有写关闭文件的语句,fin.close() fout.close(),是因为在程序结束时会自动关闭文件,所以可以在比赛中省略。

2.下面我又要开挂了,文件的重定向
因为在竞赛中通常文件功能比较单一,只需要同时打开一个输入文件和一个输出文件

在c++语言中可以使用freopen函数把stdin和stdout重新定向到相关的文件,使原来的标准输入输出变成了文件输入输出

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int N,a[1000001]
int main()
{freopen("reverse.in","r",stdin);freopen("reverse.out","w",stdout);scanf("%d",&N);for(int i=0;i<N;i++){scanf("%d",&a[i]);}for(int i=N-1;i>=0;i--){printf("%d",a[i]);}return 0;
}

在上面这个程序中

  1. 第八句重定向只读文件reverse.in到stdin
  2. 第九句重定向只写文件reverse.out到stdout
  3. 后面的只要使用标准输入输出就相当于对读写文件的操作
  4. 最后如果不考虑输入速度的问题,使用stream也同样可以重定向输入输出文件
    cin,,cout

如果还有想要了解scanf,printf和cin,cout区别的欢迎查看这篇博客史上最全scanf和cin的区别

3.还有一个就是关于指针的操作文件的问题,虽然常不使用,但是指针莫,一定是要说的,工作中会碰到的

#include<cstdio>
#include<algorithm>
using namespace std;
FILE *fin,*fout;
int N,a[1000001];
int main()
{fin = fopen("sort.in","r");fout = fopen("sort.out","w");fscanf(fin,"%d",&N);for(int i=0;i<N;i++){fscanf(fin,"%d",&a[i]);}for(int i=N-1;i>=0;i--){fprintf(fout,"%d",a[i];}return 0;
}
  1. 程序还是定义了俩个FILE*类型的变量,习惯上使用fin,fout作为变量名
  2. 使用fopen函数打开相应的文件,需要注意的是第二个参数:”r”表示以只读“read”的方式打开
    “w”表示以只写的“write”方式打开.
  3. 程序使用了fscanf()和fprintf()输入和输出数据,但是使用方法和格式基本上与scanf和printf基本一致,只是多了文件指针参数
  4. 可以使用feof(文件指针变量),返回值是真假
    while(!feof(fin))
    好了,今天就到这了,喜欢的记得给个赞,帅哥美女们记得关注一下,学生博主,谢谢了!

http://chatgpt.dhexx.cn/article/PZuElHcB.shtml

相关文章

C++ 文件输出与输入

文本文件输入 1.必须包含头文件fstream 2.需要声明一个或多个ofstream的对象&#xff0c;并以自己喜欢的方式对其进命名。 3.使用open&#xff08;&#xff09;方法将ofstream的对象和文件关联起来&#xff0c;使用完文件后使用close方法将其关闭。 4.可以直接用ofstream类…

遥感数据常用库使用笔记整理---netCDF4,h5py

netCDF4使用记录 数据读取&#xff0c;属性读取 import netCDF4 as nc>>>read_obj nc.Dataset(inputFile, moder) #数据读取>>> read_obj.variables.keys()# 获取所有数据集的名称[ulat, ulon, uPRE, ugeospatial_lat_lon_extent]>>> read_obj.va…

相机标定(2)opencv2实现

相机标定步骤 OpenCV使用棋盘格板进行标定&#xff0c;如下图所示。为了标定相机&#xff0c;我们需要输入一系列三维点和它们对应的二维图像点。 1、在黑白相间的棋盘格上&#xff0c;二维图像点很容易通过角点检测找到。 2、而对于真实世界中的三维点呢&#xff1f;由于我们…

C++的文档操作心得

先提出一个问题&#xff1a; 假如我们玩贪吃蛇&#xff0c;玩到最后游戏结束时&#xff0c;显示出游戏的最高纪录&#xff0c;那我们想想&#xff1a;当我们关闭游戏进程时&#xff0c;这个游戏最高纪录是如何保存下来的呢&#xff1f; 由此引出文件操作 1.将maxscore数据保…

文件输入输出(文本文件、二进制文件)(ifstream、ofstream)

一.写入文件流程 创建一个ofstream对象来管理输出流。将该对象与特定文件关联起来。以使用cout方式使用该对象&#xff0c;唯一区别是输出进文件&#xff0c;不是屏幕。关闭文件流. ofstream fout; fout.open(filename); //上面两步可以合并为&#xff1a; ofstream fout(fil…

【IC7】FPGA最高工作频率的计算方法;FPGA最大输出频率;查看handbook的PLL最高频率;Fout_ext;Fout两个参数;FPGA输出1ns脉冲

目录 1 时钟周期 T Tco Tlogic Troute Tsu 2&#xff0c; 故 Tlogic 4 * Tlut   3&#xff0c;  Tco Tsu 12 * Tlut 4&#xff0c;搜索handbook&#xff0c;不要搜索datasheet 4-1 时钟树的特性 4-2 PLL特性&#xff1b;Fout_ext;Fout两个参数 5&#xff0…

CNN与RNN的详细介绍

CNN与RNN的介绍 本文主要总结我对李宏毅老师讲的CNN和RNN的理解&#xff0c;通过对比总结各自的优势&#xff0c;同时加深自己对这方面知识的理解。 1、CNN介绍 CNN是一种利用卷积计算的神经网络。它可以通过卷积计算将原像素很大的图片保留主要特征变成很小的像素图片。本文介…

CNN简介

CNN 卷积神经网络是含有卷积层的神经网络&#xff0c;而卷积层则得名于卷积运算。 Filter 在卷积层中&#xff0c;我们会用一个叫做filter的东西扫过一张图片。这些 filter 啊 它们的大小是,3 3 Channel 的 Size。如果今天是彩色图片的话,那就是 RGB 三个 Channel,如果是…

深度学习(六):CNN介绍

深度学习&#xff08;六&#xff09;&#xff1a;CNN介绍 CNN架构 首先input一张image以后&#xff0c;这张image会通过convolution layer&#xff0c;接下里做max pooling这件事&#xff0c;然后在做convolution&#xff0c;再做max pooling这件事。这个process可以反复无数次…

cnn算法

机器学习算法完整版见fenghaootong-github 卷积神经网络原理(CNN) 卷积神经网络CNN的结构一般包含这几个层&#xff1a; 输入层&#xff1a;用于数据的输入卷积层&#xff1a;使用卷积核进行特征提取和特征映射激励层&#xff1a;由于卷积也是一种线性运算&#xff0c;因此需…

cnn-lstm介绍(2)

1. CNN-LSTM模型。CNN具有注意最明显的特征&#xff0c;因此在特征工程中得到了广泛的应用。LSTM有&#xff0c;按时间顺序扩张的特性&#xff0c;广泛应用于时间序列中。 根据CNN和LSTM股票预测模型的特点 建立了基于CNN的LSTM模型-e模型结构 示意图如图1所示&#xff0c;主…

实例分割模型Mask R-CNN详解:从R-CNN,Fast R-CNN,Faster R-CNN再到Mask R-CNN

Mask R-CNN是ICCV 2017的best paper&#xff0c;彰显了机器学习计算机视觉领域在2017年的最新成果。在机器学习2017年的最新发展中&#xff0c;单任务的网络结构已经逐渐不再引人瞩目&#xff0c;取而代之的是集成&#xff0c;复杂&#xff0c;一石多鸟的多任务网络模型。Mask …

CNN与RNN的区别

从应用方面上来看&#xff0c;我了解到的CNN用到做图像识别比较多&#xff0c;而RNN在做到语言处理多一点&#xff0c;如果拿来比喻的话&#xff0c;CNN如同眼睛一样&#xff0c;正是目前机器用来识别对象的图像处理器。相应地&#xff0c;RNN则是用于解析语言模式的数学引擎&a…

卷积神经网络(CNN)结构详解

一、CNN的基本结构&#xff1a; 1.图像就是输入层 2.接着是CNN特有的卷积层&#xff08;convolution&#xff09;&#xff0c;卷积层的自带激活函数使用的是ReLU 3.接着是CNN特有的池化层&#xff08;pooling&#xff09;&#xff0c; 4.卷积层池化层的组合可以在隐藏层中出…

CNN的实现(附代码)

前言 前文已经单独实现了卷积层和池化层&#xff0c;现在来组合这些层&#xff0c;搭建进行手写数字识别的CNN。 这个简单的CNN网络构成如下。 网络的构成是“Convolution - ReLU - Pooling -Affine - ReLU - Affine - Softmax”&#xff0c;我们将它实现为名为SimpleConvNet…

CNN卷积网络简介

CNN卷积网络 CNN卷积网络的结构 输入层&#xff1a; 输入层是3232 RGB图像。 注&#xff1a;有必要计算每一层输出的图片大小。 卷积层&#xff1a; 卷积层的核心在于卷积核与激活函数。   卷积层最主要的作用是寻找与卷积核匹配的特征,因为与卷积核符合&#xff08;卷积核…

CNN的通俗理解

Agenda 1 卷积神经网络Convolutional Neural Networks,CNN1.1 前言1.2 图像转化成矩阵1.3 卷积核1.4 特征图feature map1.5 激活函数1.6 池化1.7 训练 1 卷积神经网络Convolutional Neural Networks,CNN 1.1 前言 卷积神经网络是针对图像的深度学习框架。 1.2 图像转化成矩阵…

CNN网络详解

分割线----------------------------------   这里更新过一次&#xff0c;在朋友的提醒下&#xff0c;我发现这份代码不是很容易懂。我使用了Pytorch给的官方demo重新实现了LeNet&#xff0c;并做出了详细解释&#xff0c;如果理解下面代码有问题&#xff0c;可以先看我的这篇…

卷积神经网络(CNN)基本概念

一、卷积神经网络基本概念 卷积神经网络包含了一个由卷积层和子采样层构成的特征抽取器。在卷积神经网络的卷积层中&#xff0c;一个神经元只与部分邻层神经元相连接。在CNN的一个卷积层中&#xff0c;通常包含若干个特征平面&#xff0c;每个特征平面都由一些矩形排列的神经元…

CNN简单介绍及基础知识

文章目录 一&#xff09;卷积神经网络历史沿革 二&#xff09;CNN简单介绍 三&#xff09;CNN相关基础知识 前言 在过去的几年里&#xff0c;卷积神经网络(CNN)引起了人们的广泛关注&#xff0c;尤其是因为它彻底改变了计算机视觉领域&#xff0c;它是近年来深度学习能在计算机…