它没有按预期睡觉

时间:2012-02-06 09:18:00

标签: c++ sleep

考虑到这会打印类似

的内容
[E] [F] [A] [C] [A] 
[B] [F] [B] [B] [D] 
[C] [C] [C] [C] [C]

以下等待5秒并打印一行而不是执行每个[...]并等待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;
    }

3 个答案:

答案 0 :(得分:6)

这可能是因为你没有刷新std :: cout流直到endl(它也会刷新)。您可以使用cout.flush()来拨打电话。

答案 1 :(得分:3)

这应该有效:

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

像这样flush cout。然后cout << endl;将开始一个新行。

在您的代码中,您正在写入缓冲区,直到使用endl(再添加新行)将其刷新。有关详细信息,请参阅here

答案 2 :(得分:1)

也许输出是缓冲的?看看这个函数:http://www.cplusplus.com/reference/iostream/ostream/flush/