C++ 它不像预期的那样睡觉
考虑到这印的是C++ 它不像预期的那样睡觉,c++,sleep,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);
[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;
}
这可能是因为您在刷新std::cout流之前没有刷新std::cout流,而endl也会刷新std::cout流。您可以使用对cout.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;
}
你就这样冲厕所。我可以怀疑你只需要在正确的点刷新缓冲区…我无法复制这个。这对我来说很好。@razlebe可能就是这样,为什么不把它作为答案发布呢?@razlebe你敢打赌我会的。杰夫,如果他发帖的话,你应该把他的答案记下来。@Luchian,Dennis-谢谢。我只是路过这里,没有时间写一个合适的答案,所以被贴上了评论