Fehler beim vermeiden von automatischem schliessen
-
Hallo zusammen
ich habe neulich ein c++ Tutorial gefunden (http://tutorial.schornboeck.net/inhalt.htm)
dort wird ein programm beschrieben, welches zwei Zahlen tauschen soll:#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";
}ich habe auch noch
cin.clear();
cin.ignore(cin.rdbuf()->in_avail());
cin.get();hinzugefügt, (wie es im tutorial einmal steht) aber dass Programm schliesst sich dennoch automatisch nach der Zahleneingabe.

könnt ihr mir vieleicht sagen warum ?
( ich habe auch schon den ersteller des tutorials deswegen kontaktiert, aber keine Antwort bekommenfreundliche grüsse Michi 13
-
Lern doch einfach mit der Konsole umzugehen, dann ist's kein Problem mehr.
Auf jeden Fall solltest du den Code so liefern, wie du ihn kompiliert hast und das Ganze in [cpp]-Tags packen.
-
Wie meinst du mit der Konsole umzugehen ?
Ich hab es so Kompiliert:#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"; cin.clear(); cin.ignore(cin.rdbuf()->in_avail()); cin.get(); }
-
cin.get();Wartet auf eine Eingabe...dazu kann noch kommen dass du vlt durch deine Entwicklungsumgebung automatisch eine "Bitte drücken Sie eine Taste"-Meldung bekommst;)
-
Hmm, koennte das Problem da an dem in_avail liegen? Hier im Forum hat man mir mal gesagt, das koenne Probleme versuchen Gab da ja irgendetwas a la numeric_limits das man da einfuegen sollte, weisz aber gerade nicht mehr, was es genau war.
EDIT: mist, in der Konsolenfaq ist es auch noch damit angegeben...
Ich glaub sowas wiecin.ignore(5787);koennte auch funktionnieren... Na, einer wird es sicher gleich richtig hierhin schreiben.
-
ignore() hat zwei Parameter (maximale Anzahl (Default 1) und letztes Zeichen (Default EOF)), die du im Ernstfall beide angeben mußt - mit
cin.ignore(numeric_limits<streamsize>::max(),'\n');solltest du auf jeden Fall auf der sicheren Seite sein.(in_avial() gibt laut Standard die Zeichenzahl im Stream-Buffer an. Aber für für cin muß das nicht unbedingt der Tastaturpuffer des Systems sein)
-
Ich wollte in meinem vorigen Beitrag eigentlich erst schreiben:
"Aber CStoll wird das sicher gleich korrigieren", habe dann aber doch gezweifelt, lol. War da nicht irgendwas wie "Du sollst nicht zweifeln an deines Gottes Macht" oder so?