problem beim schreiben in datei
-
weiss ich ja, aber damit funktionierte es auch nicht
-
Bei mir funktionierts im MinGW.
-
ich hab auch MinGW
und da ging es nicht...
ab dem 2. mal kann ich nur noch die strecke eingeben
-
effe_eichelt schrieb:
zEt0 schrieb:
wie gesagt, ab dem zweiten aufrufen der berechnen funktion klappts nicht mehr
Das is doch genau das was ich mit dem std::cin.sync() meinte..
Der Standard garantiert nicht, das std::cin.sync() in diesem Zusammenhang korrekt funktioniert. Lest euch mal diesen Thread dazu durch.
Gruß Caipi.
-
der thread hilft mir aber auch nicht weiter...
mit dem cin.sync hab ich den selben fehler
-
zEt0 schrieb:
der thread mir aber auch nicht weiter...
mit dem cin.sync hab ich den selben fehler
Dann hast du dir den Thread nicht komplett durchgelesen.
Gruß Caipi
-
habe ich, aber anscheinend bin ich zu doof dazu.
-
vielen dank nochmal, es funktioniert jetzt
-
zEt0 schrieb:
habe ich, aber anscheinend bin ich zu doof dazu.
Also: sync() soll den istream-Puffer mit dem assoziierten Gerät synchronisieren. Das ist genau das was du willst, allerdings ist das Standard-Verhalten von std::istream::sync() dies, dass es std::streambuf::pubsync() aufruft, was wiederum std::streambuf::sync() aufruft (eine geschützte virtuelle Funktion), die 0 zurückgibt.
Du fragst dich warum das so ist? Nun genau kann ich dir das nicht sagen, aber std::streambuf soll ja einen Buffer für ein beliebiges assoziiertes Gerät bereitstellen und es ist höchstwahrscheinlich, dass man Gerät X anders mit dem Buffer synchronisiert als Gerät Y. Deshalb das Standardverhalten: "0 zurückgeben".
(Manche Implementationen weichen jedoch von diesem Standard-Verhalten ab, weshalb du wenn du z.B. den mingw verwendest std::istream::sync() aufrufen kannst und diese Funktion hier so implementiert wurde, dass sie tatsächlich den Buffer synchronisiert).Zu deinem Problem: Hast du dir schonmal die Methode std::istream::ignore() angeschaut?
/edit: zu spät...
Gruß Caipi
-
cin.clear();
cin.ignore(cin.rdbuf()->in_avail());damit hats geklappt
