moin,
soweit ich deine frage verstehe, ist dein problem, dass cin-anweisungen uebersprungen werden ? das liegt daran, dass cin normalerweise bis zum ' ' bzw '\n' einliest, aber ein '\n' von der vorherigen eingabe noch im buffer ist. das heisst um das problem zu loesen musst du einfach den eingabe buffer leeren. cin.ignore (), wenn es keine argument uebergeben bekommt, loescht das letzte zeichen im buffer, was dann auch das '\n' ist.
wenn du z.b. den ganzen buffer leeren willst, und nicht nur das letzte zeichen ( wer weiss was so alles noch drinn ist
), dann macht man das normalerweise so:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
|
inline void clear_buffer () {
std::cin.clear (); // loescht alle fehlerflags, wie z.b. ios_base::badbit, etc
std::cin.ignore ( std::cin.rdbuf () -> in_avail () ); // schaut, wie viele zeichen noch im buffer sind
// und loescht alle
// std::cin.ignore mit argument loescht die anzahl an zeichen im buffer, die als argument uebergeben wurde
};
|
mfg,
google.com