std :: cin :: y por qué queda una nueva línea

Referencia¿Por qué se cierra la consola después de haber incluido cin.get ()?

Estaba utilizandostd::cin.get()

#include<iostream>    

char decision = ' ';
bool wrong = true;

while (wrong) {
    std::cout << "\n(I)nteractive or (B)atch Session?: ";

    if(std::cin) {
        decision = std::cin.get();

        if(std::cin.eof())
            throw CustomException("Error occurred while reading input\n");
    } else {
        throw CustomException("Error occurred while reading input\n");
    }

   decision = std::tolower(decision);
   if (decision != 'i' && decision != 'b')
        std::cout << "\nPlease enter an 'I' or 'B'\n";
   else
        wrong = false;
}

Yo leobasic_istream :: centinela ystd :: cin :: get.

Elegí en lugar de usarstd::getline ya que el bucle while se está ejecutando dos veces porque el flujo no está vacío.

std::string line; std::getline(std::cin, line);

Como la referencia que publiqué más arriba se encuentra dentro de una de las respuestas,std::cin Se utiliza para leer un personaje ystd::cin::get Se utiliza para eliminar la nueva línea.\n.

char x; std::cin >> x; std::cin.get();

Mi pregunta es ¿por quéstd::cin deja una nueva linea\n en la corriente?

Respuestas a la pregunta(2)

Su respuesta a la pregunta