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üge std::flush statt endl oder eine Zeile mit cout.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


Log in to reply