相关疑难解决方法(0)

如何在C++中使用EOF停止后恢复输入流?

我想编写一个程序,以便从终端获取两组整数输入并计算两个总和.我的意图是通过EOF分隔两组输入(按Ctrl + D).这是我的代码:

#include <iostream>
using namespace std;

int main(){
    int i,sum=0;
    while((cin>>i).good())
        sum+=i;
    cout<<"Sum 1 is "<<sum<<endl;
    cin.clear();
    sum=0;
    while((cin>>i).good())
        sum+=i;
    cout<<"Sum 2 is "<<sum<<endl;
    return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)

编译后的程序适用于第一组整数输入.但是当我按下Ctrl + D时,第一个总和被计算并打印出来,并且没有进一步输入,将第二个和打印为0.所以基本上第二个while循环在开始时失败,即使cin.iostate有在它之前一直很好.那么为什么会这样呢?我应该如何更改程序,以便第二个while循环按预期进行?

c++ io

3
推荐指数
1
解决办法
674
查看次数

标签 统计

c++ ×1

io ×1