Si lo que quieres es capturar un texto con espacios una forma es usar getline();
Código C++:
Ver original#include <iostream>
using namespace std;
int main () {
string cadena; //creamos un string
int tam = 0;
getline ( cin, cadena ); //guardamos toda una linea incluindo los espacios.
tam = cadena.length(); //tam guarda el tamaño de la cadena por si lo necesitamos.
cout << cadena << endl;
cout << "Tamanio: " << tam;
cin.ignore();
return 0;
}