C++ Lectura de datos constante con while (cin)

Requisitos:

Cuando no sabemos cuántos valores nos escribirán por el teclado usamos la siguiente instrucción:

while (cin>>valor) {
    ...
}

Lo que esto hace es ir leyendo valores del teclado hasta que el usuario presione CTRL+Z en Windows o CTRL+D en MacOS y Linux (o, si se está leyendo un archivo, hasta que se llegue al final del archivo). Por ejemplo:

int suma = 0;
int num;
while (cin >> num) {
    suma = suma + num;
}
cout << suma << endl;

Podemos leer más de un valor con el cin dentro de la condición del while:

int nota;
string alumno;
while (cin >> alumno >> nota) {
    cout << "El/La " << alumno << " ha obtenido un " << nota << endl;
}

Es muy habitual utilizar la fórmula “while(cin)” para rellenar un vector cuando no sabemos cuantos valores introducirá el usuario:

vector<int> paises_visitados;
string pais;
while (cin >> pais) {
    paises_visitados.push_back(pais);
}