2011-04-15 79 views
0

我可以读线很容易的数量,使用:阅读次数

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。

(我没有提供更多的信息,看起来太像一个家庭作业)。

+0

不做作业,只是从linux执行wc命令。你给了我足够的信息。谢谢。 – Kobe 2011-04-15 11:44:24

+0

重新实现wc似乎是一种家庭作业,或者至少是一种你要学习的练习,而且你不希望直接给你一个完整的解决方案。 – AProgrammer 2011-04-15 11:47:20

+0

我只是为Windows创建一个shell,没什么大不了的,使用Boost.Filesystem来容纳这个librabry。 – Kobe 2011-04-15 11:54:02

1

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

+0

是的,我总是忘记stringstream :)谢谢。 – Kobe 2011-04-15 11:45:09