HM144 文本四种读法

HM144 文本四种读法

HM144 文本四种读法

来源: 第 144 集 C++文件操作-文本文件-读文件

难度: 入门

时间限制: 1s

空间限制: 64MB

题目描述

读文件和写文件同样是五步:包含 <fstream>、创建流对象、打开并判断是否成功、读数据、close。读的时候用 ifstream(Input),打开方式为 ios::infstream 也能读。

打开后必须先 is_open()。它返回 bool:真表示成功,假表示失败。通常写成 if (!ifs.is_open()),失败时输出 文件打开失败 并立刻 return,不要再读。路径写错、文件名写错都会失败。

读法有四种(前三种常用,第四种不推荐):

  1. 准备 char buffer[1024] = {0},循环 ifs >> buffer,每次读一个空白分隔的单词,读完返回假,循环结束。
  2. 同样准备字符数组,循环 ifs.getline(buffer, sizeof(buffer)),每次读一整行。
  3. string,循环调用全局 getline(ifs, buffer),也是每次一行。
  4. 循环 ifs.get(c),每次一个字符,直到 EOF(End of File)。一个一个读比按行慢,一般不推荐。

不论哪种读法,读完都要 close

读入先给出将写入 test.txt 的若干行(用文本写出,供后面读回),再给出读法。若行数为 \(0\),不要创建该文件,直接对不存在的 missing.txt 做打开判断。

输入格式

第一行一个整数 \(n\)(\(0 \le n \le 20\))。

  • 若 \(n = 0\):没有后续行,对 missing.txt 按读文件步骤打开并判断 is_open()
  • 若 \(n \ge 1\):接下来 \(n\) 行,每行一段文本(可含中文与英文标点,行内可以有空格)。先把这 \(n\) 行写入 test.txt,再读入一个单词表示读法:
    • GT:第 1 种,>>
    • GL:第 2 种,ifs.getline
    • SG:第 3 种,全局 getline
    • CH:第 4 种,get 逐字符

输出格式

  • \(n = 0\) 且打开失败:一行 文件打开失败,行末换行。
  • GT:每读到一个单词输出一行。
  • GL SG:每读到一行输出一行,内容与写入时一致。
  • CH:按字符原样输出全部内容(包含换行)。

读出的内容必须来自文件,不能只把输入再抄一遍。

样例

输入 #1

3
姓名:张三
性别:男
年龄:18
SG

输出 #1

姓名:张三
性别:男
年龄:18

输入 #2

0

输出 #2

文件打开失败

说明

  • 打开失败必须停读,这是 is_open 的用途。
  • >> 按空白切词;两种 getline 按行;get 按字符。
  • 样例 #1 对应课堂上 test.txt 里的三行,用全局 getline 读回。
  • 建议平时记住前三种里的一种即可,第四种了解就行。

信息

ID
1143
难度
9
分类
(无)
标签
(无)
递交数
2
已通过
1
通过率
50%
上传者