HM143 文本写出与追加
HM143 文本写出与追加
来源: 第 143 集 C++文件操作-文本文件-写文件
难度: 入门
时间限制: 1s
空间限制: 64MB
题目描述
程序里算出来的数据都是临时的:栈上、堆上的内容在程序结束后会被回收。要把重要数据留到下次再看,就要写入文件。
C++ 用文件流管文件,读写都要先包含 <fstream>。文件分两种:文本文件按 ASCII 存,记事本打开是明文;二进制按 0/1 存,打开通常看不懂。本题只做文本写出。
文件流有三个类:ofstream 负责写(Output),ifstream 负责读(Input),fstream 既能读也能写。只写时用 ofstream 即可。写出固定五步:
- 包含头文件
- 创建输出流对象
- 用
open指定路径和打开方式 - 用
<<往文件里写(和cout一样是左移,只是目标从屏幕换成文件) close关闭文件
常用打开方式:ios::in 读,ios::out 写,ios::ate 打开时定位到文件尾,ios::app 追加写,ios::trunc 若文件已存在则先删再新建,ios::binary 按二进制操纵。两种方式一起用时,中间加按位或 |,例如 ios::out | ios::binary。只写文件时屏幕上不会自动出现内容,数据已经在磁盘上。
相对路径只写文件名时,文件会出现在当前工作目录。本题固定操作 test.txt。
读入若干条命令,对 test.txt 做写出或追加,最后把文件内容读回并按行输出,以便核对。写出必须走 ofstream 和 <<,不能只在内存里攒字符串。
输入格式
第一行一个整数 \(q\)(\(1 \le q \le 100\))。
接下来 \(q\) 行,每行一种命令:
OUT s:以ios::out打开(会截断原文件),写入字符串 \(s\) 并换行。\(s\) 不含空白,长度不超过 \(50\)。APP s:以ios::app打开,在文件末尾追加 \(s\) 并换行。SHOW:按行读出当前test.txt的全部内容。
保证 SHOW 出现时文件已经至少被写出过一次。
输出格式
每次 SHOW 按文件中的行原样输出,每行行末换行。文件为空则不输出任何行。
样例
输入 #1
4
OUT 姓名:张三
APP 性别:男
APP 年龄:18
SHOW
输出 #1
姓名:张三
性别:男
年龄:18
输入 #2
5
OUT first
APP second
OUT only
APP tail
SHOW
输出 #2
only
tail
说明
OUT对应ios::out,会清空后重写;APP对应ios::app,接到原内容后面。- 必须包含
<fstream>,写完调用close。 - 样例 #1 对应课堂上记事本里那三行人员信息。
- 评测只看读回后的文本,不看屏幕在写入当时有没有打印。
信息
- ID
- 1142
- 难度
- 9
- 分类
- (无)
- 标签
- (无)
- 递交数
- 3
- 已通过
- 1
- 通过率
- 33%
- 上传者