El cin siempre que lo uses y para el tipo de datos que lo uses se comporta igual, solo lee hasta un espacio, un tabulador, un salto de línea. Es un flujo de entrada.
Al introducir "hola todos" estás escribiendo hola(espacio)todos(salto de línea). El primer cin lee hasta el espacio y el segundo cin lee hasta el salto de línea por eso brinca la línea y no te deja escribir. Si al final del programa introduces un tercer cin si podrías escribir. Un string no es un tipo básico de c++ y aunque no uses un arreglo y usases un string ocurriría lo mismo, al igual que con cualquier tipo básico (char, int, float...).
Te dejo un ejemplo de como leer una línea completa en c++ (
http://www.cplusplus.com)// getline with strings
#include <iostream>
#include <string>
using namespace std;
int main () {
string str;
cout << "Please enter full name: ";
getline (cin,str);
cout << "Thank you, " << str << ".\n";
}
Un saludo.