C++ c++;,睡眠,循环

C++ c++;,睡眠,循环,c++,linux,sleep,C++,Linux,Sleep,好的,这只是出于好奇,但是为什么睡眠函数不能在循环中工作,或者我如何才能让它在循环中工作 for(int i = 0; i < 5; i++) { cout << i << endl; sleep(2); } for(inti=0;i

好的,这只是出于好奇,但是为什么睡眠函数不能在循环中工作,或者我如何才能让它在循环中工作

for(int i = 0; i < 5; i++) { 
     cout << i << endl; 
     sleep(2); 
} 
for(inti=0;i<5;i++){

cout如果这对您不起作用,您可以尝试以下代码:

#include <iostream>
#include <windows.h>

...

for(int i = 0; i < 5; i++) { 
     cout << i << endl; 
     Sleep(2000); 
} 
#包括
#包括
...
对于(int i=0;i<5;i++){

cout
cout
是缓冲的,这意味着它的内容并不总是立即写入控制台。尝试在
sleep(2)之前添加
cout.flush()

在我看来,这个程序应该可以正常工作。也许你的std::cout被重定向到其他地方了?你没有调用正确的sleep()函数(但未提供标题)?或其他问题?但它应该可以工作。

是否尝试展开循环以查看其行为是否相同

cout << 1 << endl;
sleep(2);
cout << 2 << endl;
sleep(2);
// Etc.

cout尝试Sleep()而不是Sleep()

Dave已经给了你答案,所以我不想再谈这个问题。但是,如果纯粹是为了调试或原型代码,你也可以通过管道将输出传输到std::cout的兄弟std::cerr,这从一开始就是无缓冲的。这意味着你不需要显式调用flush,也不需要在输出中添加endl。

嗯……什么你认为它不起作用吗?可能是“储存”这些睡眠,以及上面的例子,将在10秒后打印出0 1 2 3 4?如果是这种情况,我如何避免这种情况?看起来它应该对我有用…当然,除非睡眠是标准功能,并且您已经编写了自己的。您是否将此程序的输出传输到另一个?Windows的睡眠()以毫秒为单位的时间间隔——您可能只是没有注意到2毫秒的睡眠时间。或者您可以使用std::ends在不使用换行符的情况下执行相同的操作。考虑到问题上的linux标记,我假设包含不是一个选项