2017-08-25 10 views
2

文字を文字遅延でコンソールに出力するプログラムを作成しようとしています。その後、(また、私はこれまでかなり新しいので、私はどのようにCOUT作品に非常に大きな理解を持っていません。)ワードキャラクタを遅延付きキャラクタで印刷

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"; 
} 

このコードが実行されると、4秒間のコンソール待機しコンソールにLlamaを表示します。

文字列の末尾に¥n文字を追加しても、これは望ましくない出力を生成します。

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 

改行なしでストリームをポップする方法はありますか?

+0

この記事を読むことができます。https://stackoverflow.com/questions/14105650/how-does-stdflush-work –

答えて

7

あなたは、このようなstd::flushと同じように、あなたの出力をフラッシュする必要があります。

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

std::coutは通常、コンソール出力をバッファします。 '\n'で改行を印刷すると通常は出力がフラッシュされ、std::endlは常にフラッシュされます。これはあなたが通常気付かない理由です。しかし、遅れて1行で物事を印刷したい場合は、コンソール出力を手作業でフラッシュする必要があります。

+0

素晴らしい作品です!ご協力いただきありがとうございます! – kalkr

+0

@kalkr私の​​答えがあなたの問題を解決した場合、それを受け入れることを検討してください(投票数の下の小さな緑色の矢印をクリックしてください)。 –

関連する問題