2017-08-25 5 views
2

Ich versuche, ein Programm zu erstellen, in dem Text mit einer Zeichen-zu-Zeichen-Verzögerung an die Konsole ausgegeben wird. (Auch ich bin ziemlich neu in diesem, so habe ich nicht ein sehr großes Verständnis darüber, wie cout funktioniert.)Drucken Sie ein Wort Zeichen für Zeichen mit Verzögerung

int main() { 
    std::cout << "L"; 
    waitms(1000); //function that pauses 1 second. 
    std::cout << "l"; 
    waitms(1000); 
    std::cout << "a"; 
    waitms(1000); 
    std::cout << "m"; 
    waitms(1000); 
    std::cout << "a"; 
} 

Wenn dieser Code ran ist, wartet die Konsole vier Sekunden und dann druckt Lama auf die Konsole.

Dies kann funktionieren, wenn Sie \ n Zeichen am Ende der Zeichenfolgen hinzufügen, aber es erzeugt eine unerwünschte Ausgabe.

Code: (waits four seconds) Llama 

Undesired: L (does wait, but adds newlines.) 
      l 
      a 
      m 
      a 

Desired: L (wait 1 second) l (wait) a (wait) m (wait) a 
Llama 

Gibt es eine Möglichkeit, den Stream ohne eine Zeilenschaltung zu öffnen?

+0

Vielleicht möchten Sie dies lesen https://StackOverflow.com/Questions/14105650/how-does-stdflush-work –

Antwort

7

Sie benötigen eine Ausgabe, wie mit std::flush spülen:

std::cout << "L" << std::flush; 
waitms(1000); 
std::cout << "l" << std::flush; 
// ... etc ... 

std::cout in der Regel puffert Konsole ausgegeben. Beim Drucken eines Zeilenumbaus über '\n' wird normalerweise die Ausgabe gelöscht, und std::endl wird immer geleert. Deshalb bemerken Sie das normalerweise nicht. Wenn Sie jedoch die Objekte in einer Zeile mit einer Verzögerung drucken möchten, müssen Sie die Konsolenausgabe manuell leeren.

+0

Funktioniert gut! Danke für Ihre Hilfe! – kalkr

+0

@kalkr Wenn meine Antwort Ihr Problem gelöst hat, denken Sie bitte daran, es anzunehmen (klicken Sie auf den kleinen grünen Pfeil unter der Stimmenzählung), damit zukünftige Leser es leichter sehen. –

Verwandte Themen