我正在尝试编写一个计算文件中单词数量的程序。
此代码正确计算单词的数量,但为什么如果我删除iss.clear();
它只计算文件第一行中的单词数?
stringstream iss;
while(getline(file, line))
{
iss << line;
while(getline(iss,word, ' '))
{
size++;
}
iss.clear();
}
答案 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实际上会一遍又一遍地读取下一行而不是第一行。