Chrono, thread
-
Hi, warum funktioniert das nicht, wenn man "endl" Weg macht?
#include <iostream> #include <chrono> #include <thread> using namespace std; char s[] = "Hallo"; int main () { int i = -1; while (true) { i++; cout << s[i] << endl; this_thread::sleep_for (chrono::seconds (1)); if (i == 10) return false; } }
-
„funktioniert nicht“ ist keine Fehlerbeschreibung.
-
Es kommt keine Ausgabe
-
@ycbm
Was wird denn so ausgegeben? Ich meine, nach dem 'Hallo'? Schließlich greifst Du auf Speicher zu, der Dir/Deinem Programm nicht gehört ...
-
Ohne endl wird nichts ausgegeben. Mit endl wird vertikal hallo ausgegeben.
Warum hat dieses endl so eine Gewichtung. Funktioniert diese Ausgabe nicht horizontal, da es jeweils ein eigener Befehl ist, und die nur vertikal funktionieren? Falls ja, warum wird dann nicht mal das h ausgegeben.
Den hint mit dem Speicher verstehe ich nicht ganz. Weil i größer ist als der char string?
Edit: Sehe Grad, das hallo kommt, aber direkt am Stück, nachdem die Schleife durch ist
-
@ycbm
cout dürfte gepuffert sein, d.h. es wird nicht jedes Zeichen direkt ausgegeben. Fügestd::flush
stattendl
oder eine Zeile mitcout.flush();
ein.
-
Den hint mit dem Speicher verstehe ich nicht ganz.
Dein String hat 5 Zeichen, du willst 11 ausgeben.
-
Flush funkt. Mal schauen was es mit dem Puffer auf sich hat