我写了这个小程序来说明我的问题:
int main(int argc, char* argv[])
{
int i = 0;
while(1)
{
std::cout << i++ << std::endl;
Sleep(1000);
}
return 0;
}
因此,如果你持有垂直滚动条(观察日志或其他......),这个简单的程序将停止计数。
有没有办法避免这种情况?
干杯
答案 0 :(得分:9)
不是真的。会发生什么是持有滚动条会阻止应用程序将任何新输出写入控制台,因此它最终会阻塞刷新std :: cout。这是由于Windows如何实现控制台而无法避免的。
答案 1 :(得分:0)
如果你不能依赖程序的继续执行,你可以根据初始程序所用的时间来计算i
:
#include <ctime>
time_t initialSeconds;
int main(int argc, char* argv[])
{
double i=0;
//Initialise time
initialSeconds = time (NULL);
while(1) {
i = difftime(initialSeconds, time(NULL));
sleep(1000);
}
}
这将根据计算机时钟计算经过的秒数。
(没有对此进行测试,因为我不在使用编译器的计算机上)