我写了这个小程序来说明我的问题:
int main(int argc, char* argv[]) { int i = 0; while(1) { std::cout << i++ << std::endl; Sleep(1000); } return 0; }
所以这个简单的程序将停止计数,如果你持有垂直滚动条(观看日志或任何…)。
有没有办法避免这种情况?
干杯
不是真的。 会发生什么是持有滚动条阻止应用程序写入任何新的输出到控制台,所以它最终阻止冲洗std :: cout。 这是由于Windows如何实现控制台而造成的,无法避免。
如果不能依赖程序的继续执行,则可以根据从初始程序过去的时间来计算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); } }
这将根据计算机时钟计算经过的秒数。
(没有测试过,因为我不在一台带有编译器的机器上)