HM143 文本写出与追加

HM143 文本写出与追加

HM143 文本写出与追加

来源: 第 143 集 C++文件操作-文本文件-写文件

难度: 入门

时间限制: 1s

空间限制: 64MB

题目描述

程序里算出来的数据都是临时的:栈上、堆上的内容在程序结束后会被回收。要把重要数据留到下次再看,就要写入文件。

C++ 用文件流管文件,读写都要先包含 <fstream>。文件分两种:文本文件按 ASCII 存,记事本打开是明文;二进制按 0/1 存,打开通常看不懂。本题只做文本写出。

文件流有三个类:ofstream 负责写(Output),ifstream 负责读(Input),fstream 既能读也能写。只写时用 ofstream 即可。写出固定五步:

  1. 包含头文件
  2. 创建输出流对象
  3. open 指定路径和打开方式
  4. << 往文件里写(和 cout 一样是左移,只是目标从屏幕换成文件)
  5. 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%
上传者