c++ - stdin 没有读取输入的最后一行

标签 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

程序输出:

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

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

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

进入for循环

如您所见,它没有从标准输入接收到最后一个值。为什么会这样,谁能解释一下?

最佳答案

您可能忘记了最后一行。

如果最后不按回车键,代码还在这一行等待:

std::cin >> x;

关于c++ - stdin 没有读取输入的最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43990110/

相关文章:

c++ - MFC反编译为任何非汇编代码

c++ - string.compare 什么时候停止比较? (标准)

c++ - 在结构中初始化一个 vector

c++ - 如何将图的一部分压缩成单个节点并能够找到从一个节点到所有节点的最短路径?

c++ - 与声明分开定义模板类的模板成员

c++ - 显示不在模态模式下的对话框

c++ - 除法超出数据类型限制

c++ - msys/MinGW,即使安装了也找不到libpng,尝试编译xpdf(特别是pdftopng)

c++ - 如何检查 std::string 是否确实是整数?

c++ - 您遇到过的最出色的模板用法是什么?