Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

28.02.2005, 20:13

[C++]char array einlesen?

Hi

ich hab schon wieder nen problem. Das Buch von Heiko (C++ f. Spieleprogrammierer) konnte mir da nicht so helfen. es wird kurz angeschnitten warum man einen Char array mit cin.get(ch_ARRAY, 29);(als beispiel) spaeter nen cin.ignore(); nehmen muss damit es laeuft. Hab da naemlich das problem, dass das Program nichtmal abfragt und die Zeile einfach ueberspringt. Weiter steht im Buch ja auch das das mit dem cin.ignore(); nur EINE moegliche loesung is. welche gibt es noch?


(sry fuer all die dummen fragen)

Anonymous

unregistriert

2

03.03.2005, 19:43

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

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

3

05.03.2005, 20:50

falsches Forum :-D

Werbeanzeige