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;
}