关于Stringstreams并清除它们

时间:2012-10-19 04:28:03

标签: stringstream word-count

我正在尝试编写一个计算文件中单词数量的程序。

此代码正确计算单词的数量,但为什么如果我删除iss.clear();它只计算文件第一行中的单词数?

stringstream iss;
while(getline(file, line))
{
    iss << line;
    while(getline(iss,word, ' '))
    {

        size++;
    }

    iss.clear();
}

1 个答案:

答案 0 :(得分:0)

语句while(getline(iss,word, ' '))仅获取stringstream的第一行。试着这样做:

int pos = 0;
stringstream iss;
while(getline(file, line))
{
     iss << line;
     while(getline(iss,word, ' '))
     {
          size++;
     }

     pos += line.length();
     iss.tellg(pos);
}

最后两行将读指针定位在您添加的新行的末尾,因此下一个getline实际上会一遍又一遍地读取下一行而不是第一行。