std :: cin :: und warum ein Zeilenumbruch bleibt

ReferenzWarum wird die Konsole geschlossen, nachdem ich cin.get () eingefügt habe?

Ich nutztestd::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;
}

ich lesebasic_istream :: sentry undstd :: cin :: get.

Ich entschied mich stattdessen zu verwendenstd::getline Die while-Schleife wird zweimal ausgeführt, da der Stream nicht leer ist.

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

Wie die Referenz, die ich oben gepostet habe, in einer der Antworten angibt,std::cin wird verwendet, um ein Zeichen und zu lesenstd::cin::get wird verwendet, um den Zeilenumbruch zu entfernen\n.

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

Meine Frage ist warumstd::cin eine neue Zeile hinterlassen\n im Stream?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage