stdin没有阅读最后一行输入

时间:2017-05-15 23:06:54

标签: c++

所以我有一个这样的程序:

#include <iostream>
using namespace std;

int factorial(int x) {
    int result = 1;
    for(x; x > 1; --x) {
         result*=x;
    }
    return result;
}


int main() {
    // your code goes here
    int n;
    std::cin >> n;

    for(int i = 0; i < n; ++i) {
        std::cout<< "\n";
        std::cout << "entering for loop ";
        int x;
        std::cin >> x;
        std::cout << "entering fac ";
        std::cout << factorial(x);
        std::cout << "leaving fac ";
        std::cout << "leaving for loop ";
        std::cout << "\n";
    }
    return 0;
}

当我运行程序而不是一次输入一个输入时,我将所有输入同时输入到终端中。给它输入如下:

4

1

2

5

3

程序输出:

进入循环进入fac 1离开fac离开循环

进入循环进入fac 2离开fac离开循环

进入循环进入fac 120离开fac离开循环

进入循环

如您所见,它没有收到stdin的最后一个值。为什么会发生这种情况,有人可以解释一下吗?

1 个答案:

答案 0 :(得分:1)

你可能已经忘记了最后一个新行。

如果您不在最后按回车键,代码仍在此行等待:

std::cin >> x;