Проблема с cin при вводе пробелов с использованием строкового класса

У меня есть следующий код:

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

Я заметил, что если в поле ввода ввести имя для пробела, он не даст мне возможности ввести имя, и он будет рассматривать запись после пробела как возраст. Я прошу прощения, если это ошибка новичка, что, вероятно, так и есть. Ранее я программировал Java и решил, что хочу перейти на C ++, потому что он лучше соответствует моим потребностям. Я также, вероятно, форматирую свой код странным образом по вашим стандартам, пожалуйста, исправьте его, если хотите.

Screenshot of console

Я также заметил другую ошибку, с которой у меня никогда не было проблем в Java. Я не могу понять, как предотвратить его немедленное закрытие после завершения обработки. Я слышал, что вы можете использовать "систему" ("пауза"); но мне также сказали не использовать его. Я действительно запутался в том, что использовать. Я слышал, что я использую getchar (); но, похоже, он ничего не делает.

Любая помощь будет принята с благодарностью, так как я начинающий, когда дело доходит до C ++.

Ответы на вопрос(2)

Ваш ответ на вопрос