So in the program I'm currently writing, the user is supposed to add people to a vector by inputting their names and partisan identities. However, I have been unable to make the code that actually stores the input work. The program first prompts the user for a name; then, once the user gives a name, it prompts the user again for a partisan identity. Whenever I enter more than one word for the name (e.g. "John Smith"), instead of accepting the input, the program throws this exception.

It also gives this error when I enter "D" or "R" in response to the second prompt, no matter how I respond to the first prompt. Does anyone have an idea what I'm doing wrong here? Here's the code I've written so far:
#include "DelibDem.h"
#include <stdio.h>
#include <vector>
//initializing variables
using namespace std;
bool continue_ = true;
string name = "";
string partyID = "";
int numD = 0;
int numR = 0;
int difference = 0;
int vectorSize = 0;
int newVectorSize = 0;
struct person{
    string Name;
    string PartyID;
    string equivalentName;
    string equivalenceClass;
};
vector<person> Sample;
int main()
{
    //user adds people to the vector. I have not yet implemented the code that actually adds the people specified by the user yet, because I am still trying
    //to figure out why my cin code is not working.
    while (continue_ == true) {
        string personName;
        string personPartyID;
        cout << "Enter a person's name: ";
        cin >> personName;
        cout << "Enter the person's party ID (D or R): ";
        cin >> personPartyID;
        if (personPartyID == "D") struct person inputtedPerson = { personName, personPartyID, NULL, "Republicans" };
        else struct person inputtedPerson = { personName, personPartyID, NULL, "Democrats" };
        cout << "Do you wish to add more people? (Y/N) ";
        string answer;
        cin >> answer;
        if (answer == "N") continue_ = false;
    }
    //The number of Democrats in the sample is stored in numD. The number of Republicans is stored in numR.
    for (auto& element : Sample)
    {
        if (element.PartyID == "D") numD++;
        else numR++;
    }
    //print the number of Democrats and Republicans
    cout << numD;
    cout << numR;
    //print the properties of each element in the sample
    for (auto& element : Sample)
    {
        cout << element.Name << endl;
        cout << element.PartyID << endl;
        cout << element.equivalentName << endl;
        cout << element.equivalenceClass << endl;
        cout << "\n";
    }
    return 0;
}
 
    