欢迎来到沾花把玖的C++算法课堂!

C++语言提供了一批用于文件操作的标准函数,基本操作如下:

(1)打开文件,将文件指针指向文件,决定打开文件类型;

(2)对文件进行读、写操作;

(3)在使用完文件后,关闭文件。

一、重定向版

【命令格式】

FILE * freopen( const char * filename, const char * mode, FILE * stream);

【参数说明】

filename:要打开的文件名

mode:文件打开的模式,和fopen中的模式(r/w)相同

stream:文件指针,通常使用标准流文件(stdin/stdout/stderr)

其中stdin是标准输入流,默认为键盘;stdout是标准输出流,默认为屏幕;stderr是标准错误流,一般把屏幕设为默认。通过调用freopen,就可以修改标准流文件的默认值,实现重定向。

【使用方法】

1.因为文件指针使用的是标准流文件,因此我们可以不定义文件指针。接下来我们使用freopen()函数以只读方式r(read)打开输入文件slyar.in。

格式:freopen("slyar.in","r",stdin);

2.然后使用freopen()函数以写入方式w(write)打开输出文件slyar.out。

格式:freopen("slyar.out","w",stdout);

3.接下来就是使用freopen()函数的优点了,我们不再需要修改scanf、printf、cin、cout,而是维持代码的原样就可以了。最后只要使用fclose来关闭输入文件和输出文件即可。

格式:fclose(stdin);fclose(stdout);

4.若要恢复句柄,可以重新打开标准控制台设备文件,只是这个设备文件的名字是与操作系统相关的。

格式:freopen("CON","r",stdin);

代码模板:

#include<cstdio>
int main(){freopen("slyar.in","r",stdin);freopen("slyar.out","w",stdout);/*中间按原样写代码,什么都不用修改*/fclose(stdin);fclose(stdout);return 0;
}

例题:

【题目描述】

从in.txt文件中读入数据,把它们的和保存在out.txt中。

【in.txt数据】

1 2 3 4 5

【out.txt结果】

15

以下是代码:

#include<cstdio>
int main(){freopen("in.txt","r",stdin);     //定义输入文件名 freopen("out.txt","w",stdout);     //定义输出文件名 int temp,sum=0;while(scanf("%d",&temp)==1){     //(cin>>temp)从输入文件中读入数据 sum+=temp;}printf("%d\n",sum);fclose(stdin);fclose(stdout);     //关闭文件,可省略 return 0;
}

说明:while(cin>>temp)和(scanf("%d",&temp)==1)主要是用于判断数据是否已经读完,以便及时终止循环。还可以用成员函数eof来判断是否达到数据流的末尾。对scanf、printf、cin、cout语句都适用。

二、fopen版

重定向用起来很方便,但并不是所有算法竞赛都允许读写文件。在不被允许使用重定向的情况下,我们可以使用fopen版,同样,fopen对scanf和printf语句都使用。程序如下:

#include<cstdio>
using namespace std;
int main(){FILE *fin,*fout;fin=freopen("in.txt","rb");     //定义输入文件名 fout=freopen("out.txt","wb");     //定义输出文件名 int temp,sum=0;while(fscanf(fin,"%d",&temp)==1){     //从输入文件中读入数据 sum+=temp;}fprintf(fout,"%d\n",sum);fclose(fin);fclose(fout);     //关闭文件,可省略 return 0;
}

先声明变量fin和fout(暂且不管FILE *为何物),把scanf改成fscanf,第一个参数为fin;把printf改为fprintf,第一个参数为fout,最后执行fclose,关闭两个文件。

重定向和fopen两种方法各有优劣:重定向写起来简单、自然,但是不能同时读写文件和标准输入输出;foopen的写法稍显繁琐,但是灵活性比较强(例如可以反复打开并读写文件)。

如果要把fopen版的程序改成读写标准输入输出,只需赋值fin=stdin;fout=stdout;即可,不要调用fopen和fclose。程序如下:

#include<cstdio>
using namespace std;
int main(){FILE *fin,*fout;fin=stdin;fout=stdout;/*本处语句同上*/ fprintf(fout,"%d\n",sum);return 0;
}

三、文件输入输出

在C++中,文件输入流(ifstream)和文件输出流(ofstream)的类,它们的默认输入输出设备都是磁盘文件。C++可以在创建对象时,设定输入或输出到哪个文件。由于这些类的定义是在fstream中进行的,因此,在使用这类进行输入输出操作时,必须要在程序的首部利用#include指令包进fstream头文件。

例如,若想用fin作为输入对象,fout作为输出对象,则可以使用如下定义:

ifstream fin("输入文件名.扩展名");

ofstream fout("输出文件名.扩展名");

程序如下:

#include<fstream>     //使用文件输入输出流,对cin、cout语句适用
using namespace std;
int main(){ifstream fin("in.txt");     //定义输入文件名 ofstream fout("out.txt");     //定义输出文件名 int temp,sum=0;while(fin>>temp){sum+=temp;     //从输入文件中读入数据 } fout<<sum<<endl;fin.close();fout.close();     //关闭文件,可省略 return 0;
}

如果想再次使用cin和cout,只需要把fin和fout的声明语句删掉,并加上这样两行:

#define fin cin

#define fout cout

另外,用条件编译,还可以让程序在本机上读写标准输入输出。

本文内容为小编自己汇总,内容可能会有错误或疏漏,感谢大家的提议!

记得点赞和关注哦~

C++基础算法教程|文件操作相关推荐

  1. 第三章:Python基础の函数和文件操作实战

    本課主題 Set 集合和操作实战 函数介紹和操作实战 参数的深入介绍和操作实战 format 函数操作实战 lambda 表达式介绍 文件操作函数介紹和操作实战 本周作业 Set 集合和操作实战 Se ...

  2. python3 转码的函数_python基础3之文件操作、字符编码解码、函数介绍

    内容概要: 一.文件操作 二.字符编码解码 三.函数介绍 一.文件操作 文件操作流程: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 基本操作: 1 #/usr/bin/e ...

  3. python文件操作解码_python基础3之文件操作、字符编码解码、函数介绍

    内容概要: 一.文件操作 二.字符编码解码 三.函数介绍 一.文件操作 文件操作流程: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 基本操作: 1 #/usr/bin/e ...

  4. C++基础部分_C++文件操作_二进制文件的读操作---C++语言工作笔记079

    然后我们再来看一下c++中的文件操作,如何来读取一个二进制文件,上一节我们写入了一个二进制文件,把一个person类对象写入到了一个person.txt文件中.然后这次我们把上一节,写入的person ...

  5. C++基础部分_C++文件操作_文件的读取操作---C++语言工作笔记077

    上一篇文章,我们实现了文件的写入操作,现在,我们来看文件的,读取操作. 可以看到这个文件是,前面我们写入的文件 我们开始写代码,读取文件内容.按照上面的流程来读取文件 首先我们引入fstream这个, ...

  6. C++_基础部分_C++文件操作_文件的写入操作---C++语言工作笔记076

    从现在开始我们就来接触一个新的c++中的内容,用c++来操作文件,这里包含了 文件的读操作,写操作...等等 然后我们再来,去看看c++中,如何对文件进行操作. 上面,是介绍了一些文件操作的,

  7. python基础3之文件操作、字符编码解码、函数介绍

    内容概要: 一.文件操作 二.字符编码解码 三.函数介绍 一.文件操作 文件操作流程: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 基本操作: 1 #/usr/bin/e ...

  8. Python基础7:文件操作

    [ 文件操作] 1 对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 现有文件如下: 昨夜寒蛩不住鸣. 惊回千里梦,已三更. 起来独自绕阶行. 人悄悄,帘外月胧 ...

  9. python2打开文件_Python 基础 -2.2 文件操作

    文件操作: os.mknod("test.txt") 创建空文件 fp = open("test.txt",w) 直接打开一个文件,如果文件不存在则创建文件 f ...

最新文章

  1. 堡垒机高危命令正则表达式
  2. 用perl获取可用的代理服务器地址
  3. labelimg颜色
  4. windows新建或者重命名文件及目录必须手动刷新才干显示出来问题解决方法
  5. airdroid黑屏_如何使用AirDroid从PC控制Android设备
  6. 学习mfc的一些方法
  7. 项目管理: Maven 让事情变得简单
  8. adc分辨率和精度的区别_STM32学习笔记—ADC采集数据常见问题
  9. 电脑如何录制正在播放的视频 这个方法太简单了
  10. HP 6L WIN7 WIN8 驱动
  11. 职称计算机internet应用模块,全国职称计算机考试题库(Internet应用XP版模块)
  12. 【阿里云镜像】配置阿里巴巴开源镜像站镜像——Epel镜像
  13. dell电脑装双系统linux,戴尔电脑怎么装双系统?戴尔装win7+win10双系统详细教程
  14. 2022哈工大计算机系统大作业
  15. 1449异常 mysql_连接MySQL时出现1449与1045异常解决办法
  16. 什么是JSP,JSP的运行原理是什么?
  17. 开机提示小娜无法在本计算机运行,win10系统下小娜无法打开应用如何解决
  18. 科普:DisplayPort与HDMI的比较
  19. 信号量与生产者消费者问题
  20. echarts——颜色控制

热门文章

  1. 设计的创造性思维——突破与创新
  2. IOS 经典UI素材网址
  3. Word2Vec原理推导
  4. ID选择器与Class类选择器区别
  5. webstorm提示Page'....'页面未经授权的警告解决方法
  6. Cadence Allegro页面连接符后面跟着页码
  7. Steins;Gate(原根+FFT)
  8. html select样式修改,select标签的默认样式修改
  9. TAPD · 腾讯敏捷产品研发平台基本功能介绍
  10. 求众数(C语言实现)