Como significar que não há mais entrada para a string ss no loop enquanto (cin >> ss)

Eu usei "cin" para ler palavras do fluxo de entrada, como

int main( ){
     string word;
     while (cin >> word){
         //do sth on the input word
     }

    // perform some other operations
}

A estrutura do código é semelhante à estrutura acima. É compilável. Durante a execução, continuo inserindo algo como

aa bb cc dd

Minha pergunta é como terminar esta entrada? Em outras palavras, suponha que o arquivo de texto seja apenas "aa bb cc dd". Mas não sei como informar o programa que o arquivo termina.