小学生学C++编程语法知识(C++文件读写与重定向)
文件王国大冒险——C文件读写与重定向学习目标什么是文件为什么程序要读写文件认识文本文件学会ofstream学会ifstream学会fstream学会cin、cout重定向能独立完成文件输入输出第一幕程序王国的新任务1、有一天程序王国举办了一场数学比赛。国王说今天有100万个数字需要处理。小程序员问老师我直接输入100万个数字吗老师笑了。如果一个一个输入你可能要输几个小时。2、于是老师拿出了一张纸。纸上已经写好了所有数据。老师说程序不仅能和键盘交流。它还能和纸交流。这张纸在计算机里就叫做——文件File第二幕什么是文件1、我们每天都会接触很多文件。例如作文.docx 照片.jpg 音乐.mp3 电影.mp4 程序.cpp 成绩.txt2、程序也可以自己创建文件。1例如score.txt name.txt data.txt result.txt这些文件都会保存在电脑里。程序下次还能继续使用。2这就叫文件存储File Storage第三幕文本文件是什么1、文件有很多种。1最容易学习的是文本文件Text File2例如score.txt3里面可能写着90 87 100 664或者Tom Jack Lucy5甚至Hello World6文本文件最大的特点✔ 能直接打开✔ 能看懂里面内容2、例如记事本Notepad打开以后Hello 123 ABC都能直接看到。3、文件分类一般来说文件可以分成两大类。第一类文本文件Text File例如.txt .cpp .html .json .xml特点能直接阅读一个字符一个字符保存最容易学习例如100 200 300第二类二进制文件Binary File例如.jpg .mp3 .mp4 .exe打开以后■□★※╬▒▒◣根本看不懂。因为里面保存的是010110101010二进制数据。以后学习图片、游戏时再研究。今天我们只学习文本文件。第四幕程序如何写文件1、程序王国里来了一个新角色。名字叫ofstream意思就是Output File Stream输出文件流它负责把数据写进文件。2、第一个程序#include iostream #include fstream using namespace std; int main() { ofstream fout(score.txt); fout 100 endl; fout 98 endl; fout 95 endl; fout.close(); cout 写入完成; return 0; }运行以后。电脑里就会出现score.txt里面内容100 98 953、逐句解释1创建文件ofstream fout(score.txt);2意思就是打开或创建 score.txt3以后所有fout 都会写进文件。例如fout100;不是输出到屏幕。而是写进文件。4关闭文件fout.close();表示我已经写完啦养成好习惯写完就关闭文件。第五幕连续写很多数据1、例如#includeiostream #includefstream using namespace std; int main() { ofstream fout(number.txt); for(int i1;i10;i) { fouti ; } fout.close(); return 0; }1文件内容1 2 3 4 5 6 7 8 9 102是不是和平时cout几乎一样3因为ofstream 支持 运算符第六幕程序如何读文件1、现在ifstream登场。2、它的全称是Input File Stream意思从文件读取数据。3、例如1score.txt里面88 99 772程序#includeiostream #includefstream using namespace std; int main() { ifstream fin(score.txt); int a,b,c; finabc; coutaendl; coutbendl; coutcendl; fin.close(); return 0; }3输出88 99 77是不是和平时cin完全一样4因为ifstream 支持 运算符。第七幕读取很多数字1文件1 2 3 4 52程序#includeiostream #includefstream using namespace std; int main() { ifstream fin(number.txt); int x; while(finx) { coutx ; } fin.close(); return 0; }3输出1 2 3 4 5为什么这样能一直读4因为finx成功返回真。失败返回假。5文件读完以后。循环自动结束。这是文件读取最常见的方法。第八幕竞赛里的秘密——重定向1、到了信息学比赛。1能不能直接使用cin cout2进行文件定向读取input.txt output.txt3一般竞赛已经准备好了input.txt你写的程序只需要自己去读。结果自己写。2、于是出现一种神奇操作重定向Redirect意思就是1把cin改成文件输入2把cout改成文件输出第九幕cin重定向1、例如input.txt内容10 202、程序#includeiostream #includefstream using namespace std; int main() { ifstream fin(input.txt); cin.rdbuf(fin.rdbuf()); int a,b; cinab; coutab; return 0; }3、程序仍然写cinab;但是实际上已经从input.txt读取了。是不是特别神奇第十幕cout重定向1、程序#includeiostream #includefstream using namespace std; int main() { ofstream fout(output.txt); cout.rdbuf(fout.rdbuf()); coutHelloendl; cout100endl; return 0; }2、程序里写的是cout实际上已经写进output.txt里面。第十一幕cin和cout一起重定向1、这是比赛的写法。input.txt30 502、程序#includeiostream #includefstream using namespace std; int main() { ifstream fin(input.txt); ofstream fout(output.txt); cin.rdbuf(fin.rdbuf()); cout.rdbuf(fout.rdbuf()); int a,b; cinab; coutab; return 0; }3、程序结束以后output.txt里面804、整个程序根本不用修改cin cout只是换了输入输出的位置。这就是输入输出重定向。第十二幕另一种比赛中更常见的重定向——freopen1、除了使用ifstream和ofstream重定向还有一种在信息学竞赛中更常见的方法freopen(input.txt,r,stdin); freopen(output.txt,w,stdout);2、完整程序#includeiostream #includecstdio using namespace std; int main() { freopen(input.txt,r,stdin); freopen(output.txt,w,stdout); int a,b; cinab; coutab; return 0; }3、这里r表示读取readw表示写入writestdin表示标准输入键盘stdout表示标准输出屏幕执行后cin会从input.txt中读取数据。cout会把结果写入output.txt。这种方法在许多 OJ在线评测系统调试程序时都很常见因为只需要加两行代码就能保持后面的cin、cout完全不变。第十三幕今天学会了什么文件家族类名功能常用操作ofstream写文件ifstream读文件常见文件操作操作方法写文件ofstream读文件ifstream输入输出重定向cin.rdbuf()、cout.rdbuf()或freopen()本课小结今天我们走进了文件王国认识了程序与文件交流的方法理解了什么是文本文件和二进制文件。学会使用ofstream创建并写入文本文件。学会使用ifstream从文本文件读取数据并掌握while(fin x)的常用读取方式。理解了输入输出重定向的思想学会了使用cin.rdbuf()、cout.rdbuf()和竞赛中常用的freopen()实现文件输入输出。对于信息学竞赛来说重定向最大的好处是程序的主体代码几乎不用修改只需改变数据来源和输出位置就可以在键盘、屏幕与文件之间自由切换。这也是许多优秀程序员在调试程序时经常使用的技巧。

相关新闻

Godogen游戏开发案例:如何用AI生成一个完整的2D平台跳跃游戏 [特殊字符]

Godogen游戏开发案例:如何用AI生成一个完整的2D平台跳跃游戏 [特殊字符]

Godogen游戏开发案例:如何用AI生成一个完整的2D平台跳跃游戏 🎮 【免费下载链接】godogen Autonomous game development for Godot, Bevy, and Babylon.js with Claude Code and Codex 项目地址: https://gitcode.com/gh_mirrors/go/godogen 想要…

2026/7/15 15:49:24阅读更多 →
Wan-Dancer-14B社区贡献指南:如何参与项目开发与改进

Wan-Dancer-14B社区贡献指南:如何参与项目开发与改进

Wan-Dancer-14B社区贡献指南:如何参与项目开发与改进 【免费下载链接】Wan-Dancer-14B 项目地址: https://ai.gitcode.com/hf_mirrors/Wan-AI/Wan-Dancer-14B Wan-Dancer-14B是一个基于音乐生成高质量舞蹈视频的开源项目,它采用分层框架实现分钟…

2026/7/15 15:44:23阅读更多 →
CANN/asc-devkit:GetRankDim接口文档

CANN/asc-devkit:GetRankDim接口文档

GetRankDim 产品支持情况 产品 是否支持 Ascend 950PR/Ascend 950DT √ Atlas A3 训练系列产品/Atlas A3 推理系列产品√ Atlas A2 训练系列产品/Atlas A2 推理系列产品√ Atlas 200I/500 A2 推理产品x Atlas 推理系列产品AI Core x Atlas 推理系列产品Vector Core x Atlas 训…

2026/7/15 15:44:23阅读更多 →
GPT 5.6全面开放:从基础概念到API集成开发实践指南

GPT 5.6全面开放:从基础概念到API集成开发实践指南

最近在AI技术圈里,GPT 5.6的全面开放成为了热门话题。作为OpenAI语言模型的重要更新版本,GPT 5.6在性能、响应速度和功能上都带来了显著提升。对于开发者、研究人员和AI技术爱好者来说,掌握如何正确使用这一工具变得尤为重要。本文将详细介绍…

2026/7/15 16:59:40阅读更多 →
ADS58J63高性能ADC的DDC与JESD204B接口配置实战指南

ADS58J63高性能ADC的DDC与JESD204B接口配置实战指南

1. 项目概述与核心价值 在雷达、软件定义无线电(SDR)或者高端频谱分析仪这类系统的研发中,工程师们常常面临一个核心矛盾:我们需要捕捉的射频信号频率越来越高、带宽越来越宽,但后端FPGA或处理器的数据处理能力和I/O带…

2026/7/15 16:59:40阅读更多 →
可灵AI Prompt工程:从技术原理到视频创作实践

可灵AI Prompt工程:从技术原理到视频创作实践

可灵AI获奖动画《PROMPT》探索人生选择:从技术原理到创作实践最近,可灵AI凭借一部名为《PROMPT》的动画作品在AI视频生成领域引起了广泛关注。这部作品不仅获得了行业奖项,更重要的是它通过"人生选择"这一主题,展示了AI…

2026/7/15 16:59:40阅读更多 →
从Brodmann到Yeo:脑图谱划分方法的演进与实战模板选择指南

从Brodmann到Yeo:脑图谱划分方法的演进与实战模板选择指南

1. 脑图谱划分方法的百年演进史1909年,德国神经科学家科比尼安布罗德曼(Korbinian Brodmann)发表了他基于细胞结构特征划分的52个脑区图谱,这成为神经科学史上第一个系统性的脑分区方案。当时他手工绘制这些区域时可能没想到&…

2026/7/15 16:59:40阅读更多 →
如何用OpenProject开源项目管理软件彻底改变团队协作效率

如何用OpenProject开源项目管理软件彻底改变团队协作效率

如何用OpenProject开源项目管理软件彻底改变团队协作效率 【免费下载链接】openproject OpenProject is the leading open source project management software. 项目地址: https://gitcode.com/GitHub_Trending/op/openproject OpenProject作为一款功能强大的开源项目管…

2026/7/15 16:59:40阅读更多 →
Starship:重新定义终端效率的模块化提示符架构

Starship:重新定义终端效率的模块化提示符架构

Starship:重新定义终端效率的模块化提示符架构 【免费下载链接】starship ☄🌌️ The minimal, blazing-fast, and infinitely customizable prompt for any shell! 项目地址: https://gitcode.com/GitHub_Trending/st/starship 在当今开发者的工…

2026/7/15 16:54:38阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/15 6:42:19阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/15 6:12:45阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/15 10:54:00阅读更多 →
AI框架决定企业AI能走多远

AI框架决定企业AI能走多远

企业AI建设的第一性原理 企业搞AI,最关键的决定是什么?不是选哪家大模型,不是先做哪个场景,不是招多少AI人才——而是选哪个AI开发框架。 为什么?因为框架决定了企业AI能力的"天花板"。选对了框架&#xff0…

2026/7/15 0:01:30阅读更多 →
Java企业为什么需要AI框架

Java企业为什么需要AI框架

Java企业在AI时代的尴尬处境 Java是全球企业级应用开发的主流语言——全球超过一半的企业系统跑在Java上。但在AI浪潮面前,很多Java企业感到尴尬:大模型的接口是各种语言的,AI开发社区以其他语言为主流,似乎Java在AI时代"掉队…

2026/7/15 0:01:30阅读更多 →
CC3230x嵌入式开发实战:SD主机、定时器与低功耗模式深度解析

CC3230x嵌入式开发实战:SD主机、定时器与低功耗模式深度解析

1. 项目概述:为什么需要关注CC3230x的SD主机、定时器与低功耗?在物联网和嵌入式设备开发领域,我们常常面临一个核心矛盾:设备需要具备强大的连接能力、可靠的数据存储和实时控制功能,同时又必须严格控制功耗以延长电池…

2026/7/15 0:01:30阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/15 15:50:47阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/15 8:52:38阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/15 14:06:23阅读更多 →