Retomar a leitura do iostream :: cin após Ctrl + Z (EOF)? ("Ignorar" não funciona)

Por que o loop externo no programa a seguir termina quando fornecemos ctrl + z somente para o loop interno?

<code>#include<iostream>
int main()
{
    string s1,s2;

    while(cin >> s1)
    {
        cout<<"In loop1\n";
        while(cin>>s2)
            cout<<"In loop 2\n";
        cin.ignore();
    }
}
</code>

questionAnswers(2)

yourAnswerToTheQuestion