C++ 从文件中读取行数、字数、字符数

C++ 从文件中读取行数、字数、字符数,c++,boost,C++,Boost,我可以使用以下工具轻松读取行数: 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;

我可以使用以下工具轻松读取行数:

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:如果有一个简单的方法,我会欢迎你的建议。

谢谢。

读一行,每行数一个单词。第二部分请参见stringstream


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

读一行,每行数一个单词。第二部分请参见stringstream


(我不会提供更多的信息,这看起来太像家庭作业了。)

这可以通过一个小问题来完成。。解析器。

这可以通过一个简单的。。解析器。

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

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

不是作业,只是从linux实现wc命令。你给了我足够的信息。谢谢。重新实现wc似乎是一种家庭作业,或者至少是一种学习练习,你不希望直接得到一个完整的解决方案。我只是在为windows做一个外壳,没什么大不了的,使用Boost.Filesystem只是为了适应这个库。不是家庭作业,只是从linux实现wc命令。你给了我足够的信息。谢谢。重新实现wc似乎是一种家庭作业,或者至少是一种你需要学习的练习,你不希望直接得到完整的解决方案。我只是在为windows做一个外壳,没有什么大不了的,使用Boost.Filesystem只是为了适应这个库。是的,我总是忘记stringstream:)谢谢。是的,我总是忘记stringstream:)谢谢。