我想编写一个程序,以便从终端获取两组整数输入并计算两个总和.我的意图是通过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循环按预期进行?