HM144 文本四种读法
HM144 文本四种读法
来源: 第 144 集 C++文件操作-文本文件-读文件
难度: 入门
时间限制: 1s
空间限制: 64MB
题目描述
读文件和写文件同样是五步:包含 <fstream>、创建流对象、打开并判断是否成功、读数据、close。读的时候用 ifstream(Input),打开方式为 ios::in。fstream 也能读。
打开后必须先 is_open()。它返回 bool:真表示成功,假表示失败。通常写成 if (!ifs.is_open()),失败时输出 文件打开失败 并立刻 return,不要再读。路径写错、文件名写错都会失败。
读法有四种(前三种常用,第四种不推荐):
- 准备
char buffer[1024] = {0},循环ifs >> buffer,每次读一个空白分隔的单词,读完返回假,循环结束。 - 同样准备字符数组,循环
ifs.getline(buffer, sizeof(buffer)),每次读一整行。 - 用
string,循环调用全局getline(ifs, buffer),也是每次一行。 - 循环
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.getlineSG:第 3 种,全局getlineCH:第 4 种,get逐字符
输出格式
- \(n = 0\) 且打开失败:一行
文件打开失败,行末换行。 GT:每读到一个单词输出一行。GLSG:每读到一行输出一行,内容与写入时一致。CH:按字符原样输出全部内容(包含换行)。
读出的内容必须来自文件,不能只把输入再抄一遍。
样例
输入 #1
3
姓名:张三
性别:男
年龄:18
SG
输出 #1
姓名:张三
性别:男
年龄:18
输入 #2
0
输出 #2
文件打开失败
说明
- 打开失败必须停读,这是
is_open的用途。 >>按空白切词;两种getline按行;get按字符。- 样例 #1 对应课堂上
test.txt里的三行,用全局getline读回。 - 建议平时记住前三种里的一种即可,第四种了解就行。
信息
- ID
- 1143
- 难度
- 9
- 分类
- (无)
- 标签
- (无)
- 递交数
- 2
- 已通过
- 1
- 通过率
- 50%
- 上传者