从文件中读取行数、单词数、字符数

Posted

技术标签:

【中文标题】从文件中读取行数、单词数、字符数【英文标题】:Read number of lines, words, characters from a file 【发布时间】:2011-04-15 11:28:48 【问题描述】:

我可以很容易地读取行数,使用:

ifstream in(file);
string content;
while(getline(in, content))

   // do stuff

或者我可以使用以下方式轻松读取单词和字符的数量:

ifstream in(file)
string content;
int numOfCharacters = 0;
int numOfWords = 0;
while(in >> content)

   ++numOfWords;
   numOfCharacters += content.size();

但我不想读取文件两次。如何读取文件一次,并找出行数、单词数和字符数?

PS:如果有简单的方法,我会欢迎 Boost 建议。 谢谢。

【问题讨论】:

【参考方案1】:

阅读该行并为每一行计算单词。第二部分见 stringstream。

(我没有提供更多信息,这看起来太像作业了)。

【讨论】:

不是功课,只是从linux实现wc命令。你给了我足够的信息。谢谢。 重新实现 wc 似乎是一种家庭作业,或者至少是一种你要学习的练习,并且你不希望直接给你一个完整的解决方案。 我只是在为 windows 做一个 shell,没什么大不了的,使用 Boost.Filesystem 只是为了适应这个库。【参考方案2】:

这可以通过一个简单的boost.spirit.qi 解析器来完成。

【讨论】:

【参考方案3】:

坚持使用 iostreams 解决方案:您可以从通过 getline() 读取的每一行创建一个 strstream,并对其进行字/字符计数操作,在所有行中累积。

【讨论】:

是的,我总是忘记 stringstream :) 谢谢。

以上是关于从文件中读取行数、单词数、字符数的主要内容,如果未能解决你的问题,请参考以下文章

WordCount

Python读取文件行数不对

作业-- 统计文本文件中的字符数单词数行数

如何在C++中 统计多行文本中的行数、单词数及字符数

Android 简单统计文本文件字符数单词数行数Demo

统计文本文件的字符数单词数和行数