1 | ssize_t |
文件属于IO中的重要环节,本文将针对使用C++对文件处理的过程进行总结。
简介
在介绍文件相关的类库前,我们先来看一下C++中关于IO的类库之间的相关关系
从这张图中可以看出,基于最基础的IOS类,C++标准库中又延伸出了一系列的关于IO的库,包括iostream(标准输入输出流)、fstream(文件流)、sstream(string流),这些库一同构成了C++的输入输出系统。
标准IO流
基本类库介绍
常用API
getline
getline是istream中非常常用的一个API,其功能是从istream中向string读取一行,该函数声明如下:
1 | istream& getline (istream& is, string& str, char delim); //以delim流作为分隔符,仅支持单个分隔符 |
string流
基本类型介绍
类名 | 功能 |
---|---|
istringstream | 输入string流,从string中读取数据 |
ostringstream | 输出string流,向string中输出数据 |
sstringstream | 同时具有ofstream和ifstream的功能,可以创建文件,并从文件中读写信息 |
常用API
常用操作
文件流
基本类型介绍
类名 | 功能 |
---|---|
ofstream | 输出文件流,创建文件并向文件写入信息,流向为$文本 \rightarrow 文件$ |
ifstream | 输入文件流,从文件中读取信息 |
fstream | 同时具有ofstream和ifstream的功能,可以创建文件,并从文件中读写信息 |
常用操作
文本单词数统计
这里的单词是广义的单词,即凡是以空格或回车进行分割的都称之为单词,这个统计结果与word的结果是一致的,如果需要仅统计26个英文单词,那么可以进行单独的判断
1 | int wordCount(const string& file){ |
应用实例:词频分析器
条件与限制
- 应当仅以
. ? ! ;
四个标点符号作为对句子进行划分 - 单词是指仅包含26个大小写英文字母的以空格进行区分的字符串
模块
文件处理模块
单句划分模块
词频统计模块
接口
工作流程
1 | // 读取文件 |