¿Por qué std :: getline () omite la entrada después de una extracción formateada?
Tengo el siguiente código que solicita al usuario su nombre y estado:
#include <iostream>
#include <string>
int main()
{
std::string name;
std::string state;
if (std::cin >> name && std::getline(std::cin, state))
{
std::cout << "Your name is " << name << " and you live in " << state;
}
}
Lo que encuentro es que el nombre se extrajo con éxito, pero no el estado. Aquí está la entrada y la salida resultante:
Input:
"John"
"New Hampshire"
Output:
"Your name is John and you live in "
¿Por qué se ha omitido el nombre del estado de la salida? He dado la entrada adecuada, pero el código de alguna manera lo ignora. ¿Por qué pasó esto?