首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

std::nounitbuf

Defined in header <ios>

?

?

std::ios_base& unitbuf( std::ios_base& str );

(1)

?

std::ios_base& nounitbuf( std::ios_base& str );

(2)

?

在任何输出操作之后,启用或禁用输出流的自动刷新。对输入没有影响。

1%29启用unitbuf溪流中的旗子str好像通过打电话str.setf(std::ios_base::unitbuf)...

2%29禁用unitbuf溪流中的旗子str好像通过打电话str.unsetf(std::ios_base::unitbuf)...

这是一个I/O操作程序,可以用表达式调用它,如out << std::unitbuf对任何out类型std::basic_ostream或使用表达式,如in >> std::unitbuf对任何in类型std::basic_istream...

注记

的析构函数中执行刷新。std::basic_ostream::sentry对象,它调用str.rdbuf()->pubsync()如果str.flags()&std::ios_base::unitbuf==true...

标准输出对象std::cerrstd::wcerr有他们的unitbuf默认设置的位。

参数

str

-

reference to I/O stream

返回值

str%28操作后对流的引用%29。

如果没有std::unitbuf或其他显式的刷新,输出是相同的,但不会实时出现。

二次

代码语言:javascript
复制
#include <iostream>
#include <chrono>
 
template<typename Diff>
void log_progress(Diff d)
{
    std::cout << "..("
              << std::chrono::duration_cast<std::chrono::milliseconds>(d).count()
              << " ms)..";
}
 
int main()
{
    volatile int sink = 0;
    std::cout << std::unitbuf; // enable automatic flushing
 
    auto t1 = std::chrono::high_resolution_clock::now();
    for (int j = 0; j < 5; ++j)
    {
        for (int n = 0; n < 10000; ++n)
            for (int m = 0; m < 20000; ++m)
                sink += m * n; // do some work
        auto now = std::chrono::high_resolution_clock::now();
        log_progress(now - t1);
    }
    std::cout << '\n';
}

二次

产出:

二次

代码语言:javascript
复制
..(450 ms)....(902 ms)....(1352 ms)....(1802 ms)....(2252 ms)..

二次

另见

flush

flushes the output stream (function template)

endl

outputs '\n' and flushes the output stream (function template)

代码语言:txt
复制
 ? cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com