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?