c++で入力からeofを受け取ったらループを抜けるようにしたいんですけど
cinでは出来ないんですか

#include <iostream>
using namespace std;

int main(){
int n;
while(cin >> n){
cout << "n:" << n << endl;
}
return 0;
}
とやると、一回目にeofを受け取ると抜けてくれるんですが
二回目以降だと、なぜか二回連続でeofを入力しないと止まりません
> ./eof.exe
^Z
> ./eof.exe
1
n:1
^Z
^Z
>
他にwhile(!cin.eof())とかもやってみたけど上手く動きません