【发布时间】:2026-02-22 00:00:01
【问题描述】:
不知道是不是和ostream中的flush有关。既然, endl 以冲洗结束,对吗?我不知道什么是flush以及它是如何工作的。
我有一个函数可以每秒打印出字符串的每个字符。我想在每个字符之后打印出新行。然后,我写了这个函数:
using namespace std;
void print_char_per_second (string text) {
int i = 0;
int len = static_cast<int>(text.length());
while (i < len) {
int tick = clock() % CLOCKS_PER_SEC;
if (tick == 0) {
cout << text[i];
i++;
}
}
}
它在while循环完成循环后打印文本,并一次打印文本中的所有字符。为什么会这样?
【问题讨论】:
-
Here 是一个解释
flush工作原理的答案。 -
除了刷新问题,您的代码仍然不一定每秒打印一个字符。测试
int tick = clock() % CLOCKS_PER_SEC; if (tick == 0)太严格了。你不能保证每次调用clock(),返回的值都会比上一次调用大一。
标签: c++