我有一个包含字符的数组。 我试图每秒打印一次元素。
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++;
}
有关如何按时间顺序打印每个元素而不必制作换行符的任何建议?
答案 0 :(得分:3)
由于某种原因,只需要等待110秒,然后立即打印出整个阵列。
实际上它没有,但你的输出缓冲。 C ++流对象,OS数据管道和终端中都有缓冲。
您的信息流认为将资源一次传递给一个资源会浪费资源,这是正确的:信息流并不知道您有一秒钟在每个资源之间等待。
但是,你不需要换行;你基本上可以像这样强制冲洗:
std::cout << std::flush;
回想一下,std::cout << std::endl
相当于std::cout << '\n' << std::flush
,而且它是您不想要的'\n'
部分。
这通常就足够了,但可能还需要重新配置终端以关闭线路缓冲。 (输出不太可能,但输入很常见。)