Konsole schließt sich trotz [...] cin.get();
-
Irgendwie habe ich es immer mit cin.get() gemacht. Aber das ist ja eigentlich auch egal. Mich interessiert es aber, warum ich dieses cin.sync() brauche, weil ich wissen will, warum es ohne bei diesem Code (ansonsten ja schon) nicht klappt und was es da macht...
Wieso ? Wer sagt denn das du es brauchst ? :p
Bei mir zum Beispiel geht es völlig ohne :#include <iostream> #include <windows.h> #include <conio.h> using namespace std; int main(void) { int tonhoehe; int dauer; cout << "Welche Tonh\x94he (MHz) soll ausgegeben werden? "; cin >> tonhoehe; cout << "Wie lange (MilliSec) soll der Ton ausggeben werden? "; cin >> dauer; cout << endl << "PLAY"; Beep(tonhoehe, dauer); cout << " - STOP"; getch(); return 0; }
-
Ich brauche es nur wenn ich cin.get() benutze. Und dann auch nur bei diesem Code. Sicher ich könnte auch was anderes als cin.get() benutzen. Aber ich wollte ja am Anfang des Threads wissen, warum es auf einmal nicht mehr klappt. Jetzt ist eine Lösung mit cin.sync(). Und jetzt würde mich eben nur noch interessieren, warum ich es außer bei diesem Beispiel nie brauche bzw. wozu es hier nötig ist und was es genau (in diesem Code) macht.
-
Ich brauche es nur wenn ich cin.get() benutze. Und dann auch nur bei diesem Code. Sicher ich könnte auch was anderes als cin.get() benutzen. Aber ich wollte ja am Anfang des Threads wissen, warum es auf einmal nicht mehr klappt. Jetzt ist eine Lösung mit cin.sync(). Und jetzt würde mich eben nur noch interessieren, warum ich es außer bei diesem Beispiel nie brauche bzw. wozu es hier nötig ist und was es genau (in diesem Code) macht.
Es klingt so, als wüsstest du nicht einmal was die Befehle genau machen !
Sry, aber so erscheint es mir.
-
(Falls ich mich in meinem letzten Post unklar ausgedrückt habe: sorry!)
Ich weiß was die Befehle bewirken. Sonst hätte ich sie ja nicht schon die ganze Zeit benutzt. Das einzige was ich nicht weiß und was ich seit ungefähr 6 Posts noch unter diesem Thread wissen will ist, wieso ich bei diesem Code noch zusätzlich ein cin.sync() brauche (Siehe hierzu auch meine Zusammenfassung).
Und auch wenn du mir noch öfter sagst, dass ich auch einfach getch() verwenden kann, will ich eigentlich nur noch das mit dem cin.sync() wissen. Nicht mehr und nicht weniger.Im Grund hat pivke das ja schon mal angefangen zu erklären: Der Eingabestrom wird synchronisiert, der Ausgabestrom nicht. D.h. der interne Puffer wird mit den eingegebenen Zeichen synchronisiert und überzählige werden somit verworfen.
Ich weiß nur nicht, warum das eben in diesem Code nötig ist, während ich das in den übrigen Programmen vernachlässigen konnte.
-
.m schrieb:
...
Dev-C++ wird schon lange nicht mehr weiterentwickelt. Ich würde dir dringend raten einen aktuellen Compiler heranzuziehen.
-
Dev-C++ wird schon lange nicht mehr weiterentwickelt. Ich würde dir dringend raten einen aktuellen Compiler heranzuziehen.
Sollte aber für Win32-Konsolenanwendungen reichen. Einer der aktuellsten Compiler ist Visual Studio 2008.
-
Sorry wenn jetzt der Eindruck entseht, dass ich eure Hilfe nicht schätze, aber: das mit Dev-C++ und Co wusste ich schon.
Bevor wir noch ein bisschen am Thema vorbeireden, würde ich einfach vorschlagen, ich erkläre den Thread für gelöst.
*
Wenn mir einer erklären könnte (und bitte nur dann), wieso ich bei diesem Code noch zusätzlich ein cin.sync() brauche (wenn ich cin.get() nutzen will), dann wäre es nett, wenn er/sie das noch schreiben könnte.*
Ansonsten vielen Dank für eure Hilfe!
-
Probier mal das :
#include <iostream> #include <windows.h> #include <conio.h> #include <stdlib.h> using namespace std; int main(void) { int zahl = 99999 ; for (int x=0 ; x<zahl; x++) { int tonhoehe; int dauer = 11; int runden = 30 ; cout << "Welche Tonhoehe (MHz) soll ausgegeben werden? "; cin >> tonhoehe; cout << endl; cout << endl << "PLAY"; for (int i=0; i<runden; i++) { Beep(tonhoehe, dauer); } cout << " - STOP"; system ("cls") ; } }
Der ton wird jetzt auch länger gespielt
-
.m schrieb:
Wenn mir einer erklären könnte (und bitte nur dann
), wieso
-
geht der Code überhaupt ??
-
geht der Code überhaupt ??
Lustiger Vogel, anscheinend kopiert he ?
Lies dir mal den Thread durch, könnt ich übrigens auch nochmal machen :-).
-
Nein , vorher Bearbeitet und getestet !!!!!
Wirklich !!
Im Ernst , habe lediglich ein paar sachen entfernt oder hinzugefügt , ist aber immernoch das selbe wie vorher ( vom sinn her ) !
-
Die Lösung ist übrigens schlicht und ergreifend
cin.clear(); cin.ignore(numeric_limits<streamsize>::max(), '\n'); cin.get();
Warum die andere Lösung klappen kann aber nicht muss (laut Standard) wurde oft genug besprochen, deshalb keine Quellen.
-
BTW, mag jemand diesbezüglich mal die FAQ anpassen?