预期
问题描述:
考虑到这打印类似预期
[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 ::法院流,直到endl
(其刷新为好)。你可以使用致电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;
}
这样你flush
的cout
。然后cout << endl;
将开始新的一行。
在你的代码被写入缓冲区,直到endl
冲洗它(以及添加新的线)。详情请参阅here。
我怀疑你只需要刷新()缓冲区在正确的点... – razlebe 2012-02-06 09:21:14
我无法复制此。这对我来说可以。 – 2012-02-06 09:21:30
@razlebe可能是这样,为什么不把它作为答案? – 2012-02-06 09:22:03