期待どおりに眠らない

これが次のようなものを出力することを考慮して

[E] [F] [A] [C] [A] 
[B] [F] [B] [B] [D] 
[C] [C] [C] [C] [C]

次の5秒待って、各 [...] を実行せずに1行を印刷して1秒待ちます。

    for (int i = 0; i <= 2; i++) {
        for (int j = 0; j <= 4; j++) {
            int a = randomInt(0, 5);
            sleep(1);
            cout << "[" << allowed[a] << "] ";
            usciti[i][j] = allowed[a];
        }
        cout << endl;
    }
0
私はこれを複製することができません。それは私のためにうまく動作します。
追加された 著者 Luchian Grigore,
@razlebeそれかもしれない、なぜ答えとして投稿しない?
追加された 著者 Luchian Grigore,
あなたは私にそれを賭ける。ジェフ、もし彼がそれを投稿したら、あなたは彼を答えとしてマークするべきです。
追加された 著者 Dennis,
私はあなたがちょうど正しいポイントでバッファをフラッシュする必要があると思う...
追加された 著者 razlebe,
@ルチアン、デニス - ありがとう。私が文字通り通り過ぎていたときにコメントとして掲示され、適切な答えを書く時間がなかった。 :)
追加された 著者 razlebe,

3 答え

おそらく、 endl (これも同様にフラッシュされる)までstd :: coutストリームをフラッシュしていないからでしょう。これを行うには、 cout.flush()の呼び出しを使用できます。

6
追加された

これはうまくいくはずです:

for (int i = 0; i <= 2; ++i) {
    for (int j = 0; j <= 4; ++j) {
        int a = randomInt(0, 5);
        sleep(1);
        cout << "[" << allowed[a] << "] " << std::flush;
        usciti[i][j] = allowed[a];
    }
    cout << endl;
}

Like this you flush the cout. cout << endl; will then just start a new line.

あなたのコードでは、 endl (それに新しい行を追加する)でバッファをフラッシュするまで、バッファに書き込んでいます。詳細については、こちらをご覧ください。

3
追加された

Maybe output is buffered? Look at this function: http://www.cplusplus.com/reference/iostream/ostream/flush/

1
追加された