预期

预期

问题描述:

考虑到这打印类似预期

[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; 
    } 
+5

我怀疑你只需要刷新()缓冲区在正确的点... – razlebe 2012-02-06 09:21:14

+0

我无法复制此。这对我来说可以。 – 2012-02-06 09:21:30

+0

@razlebe可能是这样,为什么不把它作为答案? – 2012-02-06 09:22:03

这可能是因为你不冲水的std ::法院流,直到endl(其刷新为好)。你可以使用致电cout.flush()来做到这一点。

也许输出缓冲?看看这个功能:http://www.cplusplus.com/reference/iostream/ostream/flush/

这应该工作:

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

这样你flushcout。然后cout << endl;将开始新的一行。

在你的代码被写入缓冲区,直到endl冲洗它(以及添加新的线)。详情请参阅here