C++文件操作之freopen

article/2025/10/3 18:40:35

作为一个OIer,文件操作是很重要的。
如果没有文件操作或文件操作被注释,等待着你的就是爆零的命运。
C和C++的文件操作,一般是用fopen或fstream,但在OI里,我们用freopen,即文件重定向。
它的用法其实也挺简单。


包含库:cstdio(stdio.h)
函数原型:

FILE *__cdecl freopen(const char * __restrict__ _Filename,const char * __restrict__ _Mode,FILE * __restrict__ _File) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;

参数:
_Filename:要打开的文件名。
_Mode:打开方式,同fopen。
_File:一个FILE型指针,可以是stdin(标准输入)或stdout(标准输出)。

好像很复杂的样子。其实就是像这样:

freopen("xxx.in","r",stdin);	//输入文件
freopen("xxx.out","w",stdout);	//输出文件

然后其他的代码按原样写就可以了。

接下来是实例代码:

#include<cstdio>
#include<iostream>
using namespace std;
int main()
{freopen("a+b.in","r",stdin);freopen("a+b.out","w",stdout);//以上是模板int a,b;cin>>a>>b;cout<<a+b<<endl;return 0;
}

运行结果:
在这里插入图片描述
如果你是一个OIer,文件操作模板请烂熟于心。
写代码时可以把文件操作加上注释。
但是,记住:提交代码时一定要把注释打开!


That’s all~

彩蛋:小技巧

#include<cstdio>
#include<iostream>
using namespace std;
string FILENAME="FILENAME";	//FILENAME 是要求的文件名去掉.in/.out后的部分//如要求打开a+b.in/a+b.out FILENAME就是a+b
int main()
{freopen((FILENAME+".in").c_str(),"r",stdin);freopen((FILENAME+".out").c_str(),"w",stdout);//do sth.return 0;
}

实例:

#include<cstdio>
#include<iostream>
using namespace std;
string FILENAME="a+b";
int main()
{freopen((FILENAME+".in").c_str(),"r",stdin);freopen((FILENAME+".out").c_str(),"w",stdout);int a,b;cin>>a>>b;cout<<a+b<<endl;return 0;
}

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

相关文章

TVM中的auto-scheduling机制(Ansor)学习笔记

背景 TVM继承了Halide中算法&#xff08;Algorithm&#xff09;与调度&#xff08;Schedule&#xff09;分离的思想。用户使用TE&#xff08;Tensor expression&#xff09;这种DSL定义计算&#xff08;算法&#xff09;&#xff0c;然后编译器优化相应的schedule&#xff0c;…

TVM的“hello world“基础流程 I

前言 继前图灵奖获得者Hennessy和Patterson在ISCA 2018提出“A New Golden Age for Computer Architecture”&#xff0c;编译器界大神Chris Lattner在ASPLOS 2021提出了“The Golden Age of Compiler Design”。另一方面&#xff0c;2020年图灵奖授予了编译器“龙书”作者Jef…

【TVM系列教程一】深度学习编译器及TVM 介绍

0x0. 介绍 大家好呀&#xff0c;在过去的半年到一年时间里&#xff0c;我分享了一些算法解读&#xff0c;算法优化&#xff0c;模型转换相关的一些文章。这篇文章是自己开启学习深度学习编译器的第一篇文章&#xff0c;后续也会努力更新这个系列。这篇文章是开篇&#xff0c;所…

TVM运行系统

TVM运行系统 TVM支持多种编程语言用于编译器堆栈的开发和部署。在本说明中&#xff0c;我们解释了TVM运行时的关键元素。 我们需要满足很多有趣的要求&#xff1a; 部署&#xff1a;从python / javascript / c 语言调用已编译的函数。 调试&#xff1a;在python中定义一个函数…

tvm的一个大体介绍

TVM的一个大体介绍 导入模型模型转换到relay转换到 _tensor_ _expression_ (TE)自动优化调度模型编译转换到TIR&#xff08;tensor IR&#xff09;编译器编译到机器码 导入模型 可以支持从tf&#xff0c;pytorch&#xff0c;或者onnx框架中导入模型。 模型转换到relay 上述框…

TVM 架构设计

TVM 架构设计 本文面向希望了解TVM体系结构和/或&#xff0c;积极参与项目开发的开发人员。 主要内容如下&#xff1a; 示例编译流程&#xff0c;概述了TVM将模型的高级概念&#xff0c;转换为可部署模块的步骤。 逻辑架构组件部分&#xff0c;描述逻辑组件。针对每个逻辑组…

TVM的安装过程

最近在看深度学习编译器相关的工作&#xff0c;其中FlexTensor给我留下了比较深刻的印象&#xff0c;加上这项工作是开源的&#xff0c;所以想看看这份工作的源码。首先是怎么把工程跑起来&#xff0c;FlexTensor倚仗TVM做代码生成&#xff0c;所以首先得安装TVM。 首先给出官…

TVM系列 - 图优化 - 算子融合

TVM系列 - 图优化 - 算子融合 图优化综述 声明一下&#xff0c;本文所有的理解都是基于个人理解。 图优化算是一个推理框架前端比较成熟的操作了&#xff0c;一般来说&#xff0c;针对模型做图优化有两个目的&#xff08;对于通用框架来说&#xff0c;就加速减少计算一个目的…

TVM 从入门到精通 | 安装 TVM (Part 2)

本文首发自&#xff1a;公众号 HyperAI超神经 内容一览&#xff1a;TVM 共有三种安装方法&#xff1a;从源码安装、使用 Docker 镜像安装和 NNPACK Contrib 安装。本文讲解如何通过 Docker 镜像 和 NNPACK Contrib 安装。 关键词&#xff1a;TVM Docker 基础教程 欢迎回…

初识 TVM

如有图像或公式显示错误&#xff0c;可以访问我的个人博客&#xff1a;https://www.wanglichun.tech/2019/11/15/tvm/ 笔者也是最近偶然的机会才开始接触TVM&#xff0c;使用过后发现&#xff0c;经过auto-tuning后的TVM模型在速度是竟然超过了TensorRT,并且笔者使用的是MXNet…

TVM(端到端深度学习编译器)简介

TVM-算子编译器前后端 前言TVM出现背景TVM是什么为什么用TVM&#xff0c;TVM解决了什么当前问题&#xff1a;TVM解决了 TVM如何解决具体实现手段如何设计搜索空间Search Space优化策略图优化 - 算子融合图优化 - Layout Transform张量优化 - 矩阵乘法 GEMM张量优化 - 调度算法张…

tvm学习笔记(五):tvm工作原理

一、总体流程&#xff1a; TVM的工作流程&#xff1a;首先&#xff0c;将网络表示成统一的表示形式&#xff08;Intermediate Representation&#xff09;&#xff0c;并进行一些可重用的图优化&#xff1b;然后&#xff0c;利用不同的后端生成对应设备代码&#xff0c;如图1所…

TVM系列 - 量化

TVM系列 - 量化 TVM量化原理TVM量化现状TVM量化原理介绍TVM量化代码解析 TVM量化原理 关于量化的方式其实已经有足够的文章去了解目前最主流的两种&#xff1a;离线量化及训练时量化&#xff08;大家应该能理解&#xff0c;其实就是伪量化&#xff09;&#xff0c;而tvm的作者…

TVM-初识TVM

目录 TVM简介那么TVM是什么&#xff1f;TVM做了哪些工作 TVM简介 随着深度学习的发展&#xff0c;深度学习的能力可以说是越来越强大&#xff0c;识别率节节攀升&#xff0c;与此同时&#xff0c;深度学习框架也变得越来越多&#xff0c;目前比较主流的深度学习框架包括&#…

【TVM系列二】TVM介绍

文章同步更新在公众号 AIPlayer&#xff0c;欢迎扫码关注&#xff0c;共同进步 目录 一、TVM的工作流程 1、整体流程 2、关键数据结构 3、Transformations 4、搜索空间和基于机器学习的转换 5、目标代码转化 二、逻辑架构组件 三、运行TVM实例 1、交叉编译runtime 2、…

TVM:简介

TVM&#xff1a;简介概述 Apache TVM 是一个用于 CPU、GPU 和机器学习加速器的开源机器学习编译器框架。它旨在使机器学习工程师能够在任何硬件后端上高效地优化和运行计算。本教程的目的是通过定义和演示关键概念&#xff0c;引导您了解 TVM 的所有主要功能。新用户应该能够从…

TVM简介

TVM与LLVM的架构非常相似。TVM针对不同的深度学习框架和硬件平台&#xff0c;实现了统一的软件栈&#xff0c;以尽可能高效的方式&#xff0c;将不同框架下的深度学习模型部署到硬件平台上。 如果从编译器的视角来看待如何解决这个问题&#xff0c;各种框架写的网络可以根据特…

TVM概述

TVM TVM是陈天奇领导的一个DL加速框架项目。它处于DL框架&#xff08;如tensorflow、pytorch&#xff09;和硬件后端&#xff08;如CUDA、OpenCL&#xff09;之间&#xff0c;兼顾了前者的易用性和后者的执行效率。 官网&#xff1a; https://tvm.apache.org/ 代码&#xf…

TVM[2] —— TVM简介和发展

TVM[2] —— TVM简介和发展 文章目录 TVM[2] —— TVM简介和发展1. TVM 简介1.1 是什么1.2 做什么1.3 基本步骤 2. TVM 的发展2.1 现状——四类抽象2.2 问题——两向boundary2.3 未来——从箭头到圈2.4 New Capabilities with Unity 下期预告&#xff1a;3. TVM 技术栈全解析&a…

TVM 学习指南(个人版)

文章目录 0x0. 前言0x1. 前端0x1.1 Tensor IR(TIR)0x1.2 了解tvm.ir基础设施0x1.3 Relay IR0x1.4 RelaxD0&#xff1a;数据流块作为第一优先级的构造D1&#xff1a;形状推导作为第一优先级的计算D1a: match_shapeD1b. 从符号整数元组构造ShapeShape传播的方法Implications for …