从文件中读取行数、单词数、字符数
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 :) 谢谢。以上是关于从文件中读取行数、单词数、字符数的主要内容,如果未能解决你的问题,请参考以下文章