首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何手动刷新缓冲区?

如何手动刷新缓冲区?
EN

Stack Overflow用户
提问于 2021-06-19 06:36:48
回答 1查看 243关注 0票数 0

this is same Question,但没有正确回答。

代码语言:javascript
复制
#include<iostream>
int main()
{
    char ch='a';
    std::cout<<ch;
}

输出

代码语言:javascript
复制
a

因此,在输出流中只有一个字符,这将导致缓冲区。所以缓冲区不是满的,它在屏幕上显示输出。意味着缓冲区被自动刷新。

因此,请给出一个例子,缓冲区不能自动刷新,我们必须使用机械手标志flush

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-19 07:48:24

您可以看到您的流是否通过在输出之间休眠来缓冲,例如:

代码语言:javascript
复制
#include <iostream>
#include <thread>

int main()
{
    for (int i = 0; i < 50; i++)
    {
        char ch = 'a';
        std::cout << ch << "\n";
        std::this_thread::sleep_for(std::chrono::milliseconds(500));
    }
}

在某些平台上,您可能需要通过调用stdout来启用setvbuf上的缓冲

代码语言:javascript
复制
std::setvbuf(stdout, nullptr, _IOFBF, BUFSIZ);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68044266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档