【发布时间】:2016-03-15 10:27:36
【问题描述】:
我正在尝试计算文件中的字数,我知道有人问过这个问题,但我已经尝试了一些我见过的实现,但我一直收到错误。
我正在阅读的文件中的行是“Super Chill”,但是当我运行代码时,我得到一个计数 3,其中 >> 第一次得到 Super,然后是两次 Chill。关于这种方法,我有几个问题:
1) While(in) 寻找什么?它如何知道何时停止?
2) 为什么“Chill”会被 >> 存储两次?
这里是代码
int countWords(std::istream& in){ // line in file is -> Super Chill
int count = 0;
std::string word;
while (in) {
in >> word;
if (word != "") {
count+= 1;
}
}
return count;
}
【问题讨论】:
-
改成
while(in >> word) { ++count; } -
有效,但您介意回答一下 While(in) 到底在做什么以及为什么我两次“冷静”吗?