#include <iostream>
int main() { // currVal is the number we're counting; we'll read new values into val
int currVal = 0, val = 0;
// read first number and ensure that we have data to process
if (std::cin >> currVal) {
int cnt = 1; // store the count for the current value we're processing
while (std::cin >> val) { // read the remaining numbers
if (val == currVal) // if the values are the same
++cnt; // add 1 to cnt
else { // otherwise, print the count for the previous value
std::cout << currVal << " occurs "
<< cnt << " times" << std::endl;
currVal = val; // remember the new value
cnt = 1; // reset the counter
}
} // while loop ends here
// remember to print the count for the last value in the file
std::cout << currVal << " occurs "
<< cnt << " times" << std::endl;
} // outermost if statement ends here
return 0;
}
源码如上 为何自己运行时最后一个数无法输出啊?
1
zpole 2016-07-25 02:04:24 +08:00 via iPad
while 没有退出
|
2
maosengshulei OP 意思是运行时输入完一串数后要输入 ctrl+z 才能结束是吗
|
3
aprikyblue 2016-07-25 10:19:47 +08:00 via Android
> while(std::cin>>val)
operator>>返回结果为 std::cin 本身,然后其通过类型转换来进行 if 判断 正常输入是一直为 true 当 ctrl+z 输入 EOF ,使得 cin 流状态变为无效,然后求值变为 false ,此时 while 退出 cin.clear()可以重新将 cin 置为有效 |