¿Cuándo y por qué necesito usar cin.ignore () en C ++?

Escribí un programa muy básico en C ++ que le pedía al usuario que ingresara un número y luego una cadena. Para mi sorpresa, al ejecutar el programa nunca se detuvo para pedir la cadena. Simplemente se lo saltó. Después de leer un poco sobre StackOverflow, descubrí que necesitaba agregar una línea que decía:

cin.ignore(256, '\n');

antes de la línea que obtiene la entrada de cadena. Agregar eso solucionó el problema e hizo que el programa funcionara. Mi pregunta es por qué C ++ necesita estocin.ignore() línea y cómo puedo predecir cuándo necesitaré usarcin.ignore()?

Aquí está el programa que escribí:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    double num;
    string mystr;

    cout << "Please enter a number: " << "\n";
    cin >> num;
    cout << "Your number is: " << num << "\n";
    cin.ignore(256, '\n'); // Why do I need this line?
    cout << "Please enter your name: \n";
    getline (cin, mystr);
    cout << "So your name is " << mystr << "?\n";
    cout << "Have a nice day. \n";

}

Respuestas a la pregunta(5)

Su respuesta a la pregunta