计数算法ctrl+z与回车键的区别


#include
using namespace std;
int main() {
    int currVal = 0, val = 0;
    if (cin >> currVal)
    {
        int cnt = 1;//保存我们正在处理的当前值的个数
        while (cin >> val) {//读取剩余的数
            if (val == currVal)//值相同
                ++cnt; //计数加一
            else {//否则打印前一个值的个数
                cout << currVal << "occurs" << cnt << "times" << endl;
                currVal = val;//记住新值
                cnt = 1;//计数器重置
            }
        }
        //记住打印文件的最后一个值
        cout << currVal << "ourrs" << cnt << "times" << endl;
    }
    return 0;
}

上面是我的代码,目的是从左到右计算每个数出现的次数。
然后下面是我输入数据后敲回车键的结果

img

下面是我用文件结束符ctrl+z的输出结构

img

区别是最后一个重复的数是否被计入,我想知道为什么会出现这种差异。

CTRL+Z是输入结束标志,换行符只是换行而已,并不表示输入结束