Cout在循环中没有endl的情况下不会打印文本?

时间:2015-03-28 09:42:21

标签: c++

我不知道它是否与ostream中的冲洗有关。既然,endl以齐齐右边结束?我不知道什么是同花顺及其运作方式。

我有一个函数会每秒打印出字符串的每个字符。我希望在每个角色之后将它打印出来。然后,我写了这个函数:

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

它在循环完成循环后打印文本,并立即打印文本中的所有字符。为什么会这样?

1 个答案:

答案 0 :(得分:7)

Flushing确保到目前为止写入流的所有输出都显示在控制台上。

您可以在每次输出操作后执行std::cout << std::flushstd::cout.flush(),以确保输出立即显示在控制台上。

现在它只是将所有内容写入流中,并且仅在循环后刷新流。