C ++不会打印最后一个值,但会在以后打印(令人困惑)

时间:2015-02-04 23:17:14

标签: c++

你好,如果我输入一些数字:

int main() {
    int currval = 0, val = 0;
    if (std::cin >> currval) {
        int cnt = 1;
        while (std::cin >> val) {
            if (val == currval) {
                ++cnt;
            }
            else {
                std::cout << currval << " occurs " << cnt << " times. " << std::endl;
                currval = val;
                cnt = 1;
            }
        }
        std::cout << currval << " occurs " << cnt << " times. ";
    }

    return 0;
}

它不会输出最后一个值出现的次数。我尝试在纸上运行代码,我发现它应该打印最后一个数字出现的次数。它很奇怪,因为如果我在找到第一组数字的每一个出现的时间之后输入更多的数字,它将打印第一组的最后一个值出现在第二个打印物中的时间。你可以编译并运行它,看看你是否得到不同的结果。我是c ++的新手,所以任何事情都会有所帮助。  感谢。

1 个答案:

答案 0 :(得分:2)

如果您需要在特定位置刷新流,则需要刷新它。否则,它可以在内部缓冲并稍后刷新。