保持滚动条冻结win32控制台应用程序

我写了这个小程序来说明我的问题:

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); } } 

这将根据计算机时钟计算经过的秒数。

(没有测试过,因为我不在一台带有编译器的机器上)