FAQ-Vorschlag - Fehlerhafte Eingaben behandeln
-
Ich denke mal, es fällt wahrscheinlich den Meißten einfacher ein
string temp = ""; getline(cin,temp);zu merken (und zu schreiben), im Gegensatz zu:
cin.ignore( numeric_limits< std::streamsize >::max(), '\n' );( meine subjektive Einschätzung )
Den gewünschten Effekt erzielen beide gleich gut. ( Hoffe ich zumindest
)
-
halte nen FAQ artikel, der die sinnlosigkeit von eingaben dieser art darstellt, für sinnvoller ^^
-
KasF schrieb:
Ich denke mal, es fällt wahrscheinlich den Meißten einfacher ein
string temp = ""; getline(cin,temp);zu merken (und zu schreiben), im Gegensatz zu:
cin.ignore( numeric_limits< std::streamsize >::max(), '\n' );( meine subjektive Einschätzung )
)Wer sind denn die "Meißten"?

KasF schrieb:
Den gewünschten Effekt erzielen beide gleich gut. ( Hoffe ich zumindest

Und wenn du dir den Code später wieder anschaust überlegst du verzweifelt was dieser komische String da soll. Abgesehen davon dass man das wohl auch besser in eine Funktion packen sollte/könnte.
-
finix schrieb:
Wer sind denn die "Meißten"?

Du, ich und der da hinten

finix schrieb:
Und wenn du dir den Code später wieder anschaust überlegst du verzweifelt was dieser komische String da soll. Abgesehen davon dass man das wohl auch besser in eine Funktion packen sollte/könnte.
Ich denke mal beide sind gleich gut zu lesen/verstehen:
Fritz: "Ohhh, fail() da ist ein Fehler im Stream. Hmmmm, was hieß nochmal das clear() ... Ahhh ich muss dem Stream sagen, dass die Fehler nun Weg sind in dem ich die Fehlerflags lösche.* Aja und dann ignoriere ich mit ignore die "Fehlerzeichen". || ** Aja dann definiere ich ein String und lese aus cin die "Fehlerzeichen" aus.
Aber wenn einige meinen das solle weg, dann ok. Aber ne alternative zu zeigen ist ja auch nicht schlimm

Ich könnt ja auch den letzten Codeteil mit ignore() schreiben. ( ? )
-
KasF schrieb:
Aber wenn einige meinen das solle weg, dann ok. Aber ne alternative zu zeigen ist ja auch nicht schlimm

Nicht einige, die meiSten.
-

Aber trotzdem die Meisten
Edit: Ach geht irgendwie beides: http://www.duden.de/deutsche_sprache/neue_rechtschreibung/neuregelung/gross_und_klein.php#unbestZahl - Nun aber Schluss damit ...
-
Kommt das noch in die FAQ oder geht das hier jetzt unter
?
-
hallo,
kannst du mir bitte sagen, ob die ganzen STREAM-Sachen fuer Grafische Programme benutzt werden?
ich wuerde nur gerne wissen ob das nur fuer den "Konsolenbereich" dazu da ist?Mit freundlichen Gruessen
-
<wWw> schrieb:
kannst du mir bitte sagen, ob die ganzen STREAM-Sachen fuer Grafische Programme benutzt werden?
ich wuerde nur gerne wissen ob das nur fuer den "Konsolenbereich" dazu da ist?Wie liest Du denn Dateien ein?!
-
Konrad Rudolph schrieb:
<wWw> schrieb:
kannst du mir bitte sagen, ob die ganzen STREAM-Sachen fuer Grafische Programme benutzt werden?
ich wuerde nur gerne wissen ob das nur fuer den "Konsolenbereich" dazu da ist?Wie liest Du denn Dateien ein?!
Hallo Konrad,
also um Ehrlich zu sein habe ich dieses Kapitel noch nicht gelernt, hab es zurzeit uebersprungen, da ich es auch noch zu kompliziert finde(besonders wenn ich nicht zu hause bin und keinen compiler am rechner hab xD - nur ein Buch ...)
Ich wuerde nur gerne erfahren, ob man es in der Spieleprogrammierung braucht und ob es nur fuer Windows bereitsgestellt wurde oder ob es os unabhaengig ist?
Mit freundlichen Gruessen
-
<wWw> schrieb:
Ich wuerde nur gerne erfahren, ob man es in der Spieleprogrammierung braucht und ob es nur fuer Windows bereitsgestellt wurde oder ob es os unabhaengig ist?
Die gesamte Standardbibliothek von C++ ist plattformunabhängig. Sonst würde sie ja auch nicht sonderlich viel in einer plattformunabhängigen Sprache bringen.
Und ja, auch für die Spieleprogrammierung braucht man Streams. Ich würde mal behaupten, dass kaum ein größeres Programm ohne Streams in irgend einer Form auskommt.
-
Um diese zu löschen können wir entweder die ungültigen Zeichen im Puffer ignorieren* oder auslesen**
Das geht einfacher mit:
fflush(stdin);
-
AUA.
Bitte auf keinen Fall C und C++ miteinander vermixen... fflush ist ein C-Routine, (deswegen auch stdin) und dein Vorschlag hat vielleicht garkeinen Einfluss auf den Puffer von cin (haengt von der Implementierung ab). Auch wenn C eine Untermenge von C++ ist, (wird zumindest immer behauptet) sollte man die beiden nur mit grosser Vorsicht vermischen. Boese sind auch Dinge wie Vermischung von malloc, new, delete und free *schauder*
-
Sorry, ich habe das im Studium so gelernt, und es funktionierte bis jetzt immer (mit cin).
-
qBastiS:
Auch AUA da:http://www.c-plusplus.net/forum/viewtopic-var-p-is-1146014.html
-
Hier ist noch eine Variante:
cin.ignore(cin.rdbuf()->in_avail());
-
Man lernt im Studium, dass man mit fflush(stdin) cin "leeren" kann? Na dann mal gut, dass ich C++ nicht im Studium gelernt habe, da stecken ja gleich mehrere große AUAs drin.
@BastiS:
Die letzte Variante hat den Nachteil dass nicht auf jeder Plattform in_avail für das Terminal so implementiert ist, wie es nötig wäre. Am sichersten ist immernoch die Variante, "unendlich viele" (numeric_limits<streamsize>::max) Zeichen bis zum nächsten '\n' zu lesen.
-
Suchbegriff meißten: 0 Treffer.
http://www.duden.de/suche/index.php?begriff=mei�ten&bereich=mixed&pneu=Suchbegriff meisten: 279 Treffer.
http://www.duden.de/suche/index.php?begriff=meisten&bereich=mixed&pneu=Dein FAQ Beitrag soll ja fehlerfrei sein

-
Man lernt im Studium, dass man mit fflush(stdin) cin "leeren" kann? Na dann mal gut, dass ich C++ nicht im Studium gelernt habe, da stecken ja gleich mehrere große AUAs drin.
Ich werde den Prof darauf hinweisen.
Am sichersten ist immernoch die Variante, "unendlich viele" (numeric_limits<streamsize>::max) Zeichen bis zum nächsten '\n' zu lesen.
Damit bekam ich folgende Fehlermeldung:
.\menu.cpp(23) : warning C4003: Nicht genügend übergebene Parameter für das Makro 'max'
.\menu.cpp(23) : error C2589: '(': Ungültiges Token auf der rechten Seite von '::'
.\menu.cpp(23) : error C2143: Syntaxfehler: Es fehlt ')' vor '::'
.\menu.cpp(23) : error C2059: Syntaxfehler: ')'bis ich ein
#undef maxdavorsetzte.
-
Der den Duden lesen kann schrieb:
Suchbegriff meißten: 0 Treffer.
http://www.duden.de/suche/index.php?begriff=mei�ten&bereich=mixed&pneu=Suchbegriff meisten: 279 Treffer.
http://www.duden.de/suche/index.php?begriff=meisten&bereich=mixed&pneu=Dein FAQ Beitrag soll ja fehlerfrei sein

Jaja
das haben wir ja schon geklärt. Das Wort kommt ehe nicht im ersten Beitrag vor und wenn der Thread es mal in die FAQ schaffen sollte, dann müsste ehe der ganze Müll hier mal raus.@Basti: Wo studierst du ?