Einzelnen Beitrag anzeigen

OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#19

Re: [C++] "cin" wird übersprungen

  Alt 11. Nov 2007, 12:11
Um es etwas klarer zu machen:
1. >> heißt entweder operator>>, Shiftoperator oder Streamoperator. Damit solltest du suchen können (oder einfach auf cppreference.com oder cplusplus.com mal unter iostream gucken). Bei diversen Fragen, insbesondere esoterischen, sollte auch das C++ FAQ Lite eine Anlaufstelle sein. Dort findet sich auch ein schönes Beispiel für ignore:
Code:
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
Edit: Oh, und allgemein für dein Problem FAQ 15.2.
2. Alle standardmäßig definierten operator>>, die einen istream& als ersten Parameter nehmen, haben auch wieder istream& als Rückgabewert. In der Praxis bekommst du also die Referenz auf den Stream zurück, um den Aufruf verketten zu können.
Code:
if (cin >> eingabe)
ist also dasselbe wie
Code:
cin >> eingabe;
if (cin)
Der Ausdruck wird selbstverständlich nicht in einen Zeiger umgewandelt, sondern in bool konvertiert (operator bool(), falls du dich an den anderen Thread erinnerst ) und kann damit auf true oder false überprüft werden. Im weitesten Sinne ist false dabei die Entsprechung zu bad() und true die Entsprechung zu good().
3.
Wenn man so will, hast du recht, der Ausdruck aus 2. wird true, wenn eingabe korrekt gefüllt werden konnte, und false, wenn nicht.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat