使用sleep()以一秒的间隔打印数组元素

Printing array elements in one second intervals using sleep()

本文关键字:打印 数组元素 sleep 使用 一秒      更新时间:2023-10-16

我有一个包含字符的数组。我正在尝试每秒打印一个元素。

int i=0;
while (i< 110)
{
    cout << arrayValue[i]<<"";
    sleep(1);
    i++;
 }

由于某种原因,它等待了110秒,然后立即打印出整个数组。

但是如果我在每个元素后面添加新行,它就会正常工作

 int i=0;
while (i< 110)
{
    cout << arrayValue[i]<<"";
    cout<< endl;
    sleep(1);
    i++;
 }

如何让每个元素按时间顺序打印而不需要换行,有什么建议吗?

由于某种原因,它等待了110秒,然后立即打印出整个数组。

实际上它没有,但是你的输出是缓冲的。在c++流对象中,在操作系统数据管道中,在你的终端中都有缓冲。

你的流认为一次传递一个字符会浪费资源,这是对的:流不知道你在每个字符之间有一秒钟的等待时间。

你不需要换行符;你可以像这样强制刷新:

std::cout << std::flush;

回想一下,std::cout << std::endl等于std::cout << 'n' << std::flush,而'n'部分是您不想要的。

这通常就足够了,但是您可能还需要重新配置您的终端以关闭联机缓冲。(对于输出不太可能,但对于输入却很常见)。