sleep()
-
Hallo.
Ich hab mal ein Programm geschrieben um die sleep() Funktion auszuprobieren:#include <iostream.h> int main() { cout<<"1"; sleep(2); cout<<"2"; sleep(2); cout<<"3"; }Müsste das Programm dann nicht 1 ausgeben, 2 s warten, 2 ausgeben, 2 s warten und dann 3 ausgeben?
Stattdessen wartet das Programm 4 s und gibt dann alle Zahlen sofort hintereinander aus.
Kann mir das jemand erklären?Vielen Dank schonmal.
-
mach mal hinter jede 'cout' zeile ein '<< flush'

-
Danke jetzt geht es.
Was bewirkt dieses ´<< flush´?
-
wenn du etwas zu output-stream schreibst (cout in diesem fall), es bleibt da, bis der buffer geloscht* wird. flush macht das.
wenn du auch endl schreibst, endl ist auch wie ein "\n" + flush;
das selbe ist gilt auch mit cin nach cout
*ich weiss nicht ob die aussage so ist.. meine muttersprache ist nicht deutsch.. kann mich jemand helfen?

-
Danke.
*ich weiss nicht ob die aussage so ist.. meine muttersprache ist nicht deutsch.. kann mich jemand helfen?

Ich würde sagen:
Wenn man etwas in den output-stream schreibst (...),(dann/so) bleibt es da/dort bis der Buffer gelöscht wird.
-
StreamKid schrieb:
wenn du etwas zu output-stream schreibst (cout in diesem fall), es bleibt da, bis der buffer geloscht* wird. flush macht das.
Naja, "gelöscht" ist wohl der falsche Ausdruck dafür (auch wenn ich auf die Schnelle keine bessere Übersetzung für "flush" habe)

Klar formuliert: Ein Output-Stream hat einen internen Ausgabepuffer, in den alle Ausgaben zwischengespeichert werden. Wenn der voll ist (oder du es ihm per flush befiehlst), werden die Daten von dort aus in die externe Datenrepresentation (Fastplatte/Bildschirm/...) umkopiert.