c++ - 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读取两次?
解决方案
推荐阅读
- javascript - VueJS 中的多行字符串
- javascript - 如何有条件地加载 HTML 元素,或者在加载页面之前删除它们?
- spring - Spring:从具有关系的表中删除数据
- javascript - React:映射数据
- python - 如果字典中的列表中存在值,则返回键
- python - Django 在 UpdateView 类中设置 ModelForm ModelChoiceField 初始值
- android - 如何从回收站视图中获取项目?
- node.js - Stripe Connect - 如何以最安全的方式使用令牌来传递敏感数据?
- python - 有没有一种“热交换”列表的pythonic方法?
- css - CSS自定义样式复选框:使复选标记出现并(删除焦点样式)