cout funktioniert nicht
-
Ja Jackpot ist mir bekannt

Was empfehlt ihr mir, getchar() oder wait()??
Was findet ihr besser, bzw zu was ratet ihr?grüße
ziox.
-
Ja Jackpot ist mir bekannt
Hrrrr, woher das wohl ...

Was empfehlt ihr mir, getchar() oder wait()??
Also da sind wir ja an dem Problem angelangt, weswegen ich dir auch die wait () Funktion gegeben habe ... Generell ist getchar natürlich angebrachter, wobei es aber auch ganz klar den Nachteil mitsich bringt, dass es nicht immer hilft, da sich ja noch was im Eingabepuffer befinden könnte. Ich muss dir ganz ehrlich sagen, ich blicke bei dem bis heute noch nicht durch, und möchte dir auch keine großen Stories erzählen ...
Also Faustregel: getchar ist vorzuziehen, und wenn das nicht klappt, dann nimm wait (); Alternativ dazu könntest du noch getch (); hernehmen, dazu musst du aber <conio.h> einbinden.
MfG mikey.
-
hmmm er will doch das konsolenfenster offen bleibt, geht es dann nicht auch so ?
oder hab ich etwas falsch verstanden
#include <iostream> using namespace std; int main() { int zahl1; int zahl2; cout << "Bitte eine Zahl eingeben" << endl; cin >> zahl1; cout << "Bitte noch eine Zahl eingeben" << endl; cin >> zahl2; cout << "Zahl 2: " << zahl2 << endl; cout << "Zahl 1: " << zahl1 << endl; [b]system("PAUSE");[/b] return 0; }
-
Wo kann ich denn(allgeein jetzt) nachsehen wie die Funktion getchar(); aussieht?
Gibt es da eine Übersichtsseite hier im Forum oder so?
Wäre nett wenn ihr mir das sagen könntet.Edit:
hmmm er will doch das konsolenfenster offen bleibt, geht es dann nicht auch so ?
oder hab ich etwas falsch verstandenMit System("PAUSE"); geht es auch, allerdings hab ich schon öfters gehört und gelesen das das seh langsam sein soll.
kP obs stimmt, deswegen frag ich ja hier
grüße
ziox.
-
Die Funktion getchar () hat keine Parameter, falls du das meinst.
Mfg Ominion
-
Ich weiß zwar nicht, was an obiger Codezeile so mysteriös ist, aber ich werd' versuchen, etwas Licht in die Sache zu bringen.
std::cin.ignore(std::cin.rdbuf()->in_avail());Okay, gehen wir's von innen an. cin.rdbuf() liefert ein stringbuf* zurück. Dieses hat die (von streambuf geerbte) Methode in_avail() welche die Anzahl der Zeichen im Stream zurückgibt. Gut, eigentlich geht in_avail hin schaut erstmal, ob der Pointer auf das nächste zu lesende Element kleiner als der Pointer ist, der hinter das letzte Element des Streams zeigt. Wenn dem so ist, subtrahiert es die Position vom nächsten Element von der Position des Elements "hinter dem Ende des Streams" ( egptr() - gptr() ). Ansonsten wird showmanyc aufgerufen, welches per default null zurückgibt.
ignore hingegen holt n Zeichen aus dem Stream und verwirft sie. Der Stream ist in dem Fall cin und n ist der Wert, den wir von in_avail() bekommen. Also die Anzahl der Zeichen, die momentan im Stream lesbar sind.
Ach ja, wait ist klar besser, da man getchar ziemlich leicht überlisten kann, wenn zwei Sachen im Buffer stecken. Und von getch lässt man die Finger, weil die conio.h nicht überall vorhanden ist (hängt vom Compiler ab).
MfG
GPC
-
Mit System("PAUSE"); geht es auch, allerdings hab ich schon öfters gehört und gelesen das das seh langsam sein soll.
kP obs stimmt, deswegen frag ich ja hier*duckundwegrenn* natürlich hast du Recht. Vergiss das system ("pause") lieber ...
@GPC: Danke für die Erklärung, ich habe schon viele Tutorials durchgelesen, aber keiner lieferte diese Erklärung

In Sachen getch (), das habe ich auch erwähnt, dass es wirklich die letzte Alternative sein sollte. Aber da unser Freund ja Dev-C++ hernimmt, konnte ich es ihm ruhig empfehlen, da getch () dort vorhanden ist ...
MfG mikey.
-
Hallo!
Ja, kann mir jemand sagen warum getchar(); hier nicht funktioniert:
#include<iostream> using namespace std; int main() { int zahl1; int zahl2; cout<<"Bitte eine Zahl eingeben\n"; cin>>zahl1; cout<<"Bitte noch eine Zahl eingeben\n"; cin>>zahl2; cout<<"Zahl 2: "<<zahl2<<"\n"; cout<<"Zahl 1: "<<zahl1<<"\n"; getchar(); }wie muss ich das denn richtig einbauen?
grüße
ziox.
-
-.- Ich hab dir ja nicht umsonst gesagt, dass getchar () sehr unsicher ist. In deinem Beispiel befindet sich nunmal was im Eingabepuffer, und somit kann getchar () nicht funktionieren, da es denkt, es wird etwas eingegeben. Hier musst du wait () vorziehen, sprich erst den Eingabepuffer leeren, und das machst du nun mit dieser Funktion

Um weitere Fragen zu klären: Nimm einfach den vorherigen Code, der mit wait ()
MfG mikey.
-
aha..
-
hin.
geht es dann?NEEEEIN, sag mal, willst du uns quälen, oder liest du die Beiträge nicht ? Nun wurde schon zweimal erklärt, dass man system ("pause") nicht hernehmen soll, und dass es völlig unnütz ist, da es viel bessere Alternativen gibt. Ich sag da nur wait () ...
[EDIT] @ black_x: War nur gut gemeint
