好吧,这只是出于好奇,但为什么睡眠功能不能在循环中工作,或者我怎样才能让它在循环中工作?
for(int i = 0; i < 5; i++) {
cout << i << endl;
sleep(2);
}
答案 0 :(得分:6)
cout
被缓冲,意味着其内容并不总是立即写入控制台。尝试在cout.flush()
sleep(2);
答案 1 :(得分:2)
如果这对您不起作用,您可以尝试以下代码:
#include <iostream>
#include <windows.h>
...
for(int i = 0; i < 5; i++) {
cout << i << endl;
Sleep(2000);
}
答案 2 :(得分:0)
以我的拙见,这个程序应该正常工作。也许你的std :: cout被重定向到其他地方?你没有调用正确的sleep()函数(但没有提供头文件)?还是其他问题?但它应该有用。
答案 3 :(得分:0)
您是否尝试展开循环以查看其行为是否相同?
cout << 1 << endl;
sleep(2);
cout << 2 << endl;
sleep(2);
// Etc.
假设行为方式相同,即使std :: endl应该刷新缓冲区,它确实看起来像dave.kilian有正确的想法,cout没有被刷新,直到程序(推测)终止。
在这种情况下,尝试执行std :: flush并查看是否有帮助 - 您的标准库中可能存在错误(错过功能?)。
要尝试的另一件事是在另一个窗口中使用tail -f
观看时将输出重定向到文件。查看重定向时是否发生相同的延迟。
最后尝试使用编译器的优化级别,看看是否会改变结果。
答案 4 :(得分:0)
答案 5 :(得分:-1)
尝试Sleep()而不是sleep()