gpt4 book ai didi

c++ - 使用 sleep() 以一秒为间隔打印数组元素

转载 作者:行者123 更新时间:2023-11-30 02:37:33 24 4
gpt4 key购买 nike

我有一个包含字符的数组。我试图每秒打印一次元素。

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

出于某种原因,这只是等待 110 秒,然后立即打印出整个数组。

但是如果我在每个元素之后添加一个新行它就可以正常工作

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

关于如何让每个元素按时间顺序打印而无需换行的任何建议?

最佳答案

This for some reason just waits for 110 seconds and than prints out the whole array at once.

实际上它没有,但是您的输出是缓冲的。在 C++ 流对象、OS 数据管道和您的终端中都有缓冲。

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

不过,您不需要换行符;你基本上可以像这样强制冲洗:

std::cout << std::flush;

回想一下 std::cout << std::endl相当于std::cout << '\n' << std::flush ,它是 '\n'您不想要的部分。

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

关于c++ - 使用 sleep() 以一秒为间隔打印数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31523480/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com