Problema con cin cuando se ingresan espacios, usando la clase de cadena

Tengo el siguiente código:

main.cpp
#include <iostream>
#include <string>

using namespace std;

string name;
string age;

int main() {
    cout <<"Name: ";
    cin >> name;
    cout << endl;
    cout <<"Age: ";
    cin >> age;
    cout << endl;
    cout << "Your name is " << name << ", and you are " << age << " years old."  << endl;
    cout << "Press enter to close this application" << endl;
    getchar();
    return 0;
}

Noté que si pongo un espacio en mi entrada para el nombre, no me dará la oportunidad de ingresar un nombre, y verá la entrada después del espacio según la edad. Pido disculpas si este es un error de novato, que probablemente sea. Previamente programé Java y decidí que quería cambiar a C ++ porque se adapta mejor a mis necesidades. Probablemente también formateo mi código extraño a sus estándares, corríjalo si lo desea.

También noté otro error, algo con lo que nunca tuve problemas en Java. No puedo descubrir cómo evitar que se cierre instantáneamente cuando termina de procesarse. He oído que puedes usar "sistema" ("pausa"), pero también me han dicho que no lo use. Estoy realmente confundido sobre qué usar. He oído usar getchar () ;, pero No parece hacer nada.

Cualquier ayuda sería muy apreciada, ya que soy un principiante cuando se trata de C ++.

Respuestas a la pregunta(2)

Su respuesta a la pregunta