首页 > 解决方案 > C++ 为什么 cin 读行两次?

问题描述

我有一个简单的程序,我试图将文件重定向到标准输入并打印出每一行。我知道每行有两个数字,但我不知道有多少行。

#include <bits/stdc++.h>
using namespace std;

int main()
{
    ifstream in("input.txt");
    cin.rdbuf(in.rdbuf()); // redirect to stdin

    while(!cin.eof())
    {
        int a, b;
        std::cin >> a >> b;
        std::cout << "a = " << a << ", b = " << b << std::endl;
    }

    return 0;
}

如果我在“input.txt”上运行它

1 2
3 4

我得到输出

a = 1, b = 2
a = 3, b = 4
a = 3, b = 4

为什么第二行被cin读取两次?

标签: c++cin

解决方案


推荐阅读