std:: basic_syncbuf
| 
           定义于头文件
            
            
             <syncstream>
            
            | ||
| 
           
            
             template
            
            
             <
            
             
             
              class
             
             CharT,
              | (C++20 起) | |
       
        std::basic_syncbuf
       
       是对
       
        
         std::basic_streambuf
        
       
       (在构造时以指针形式提供)的包装器。它在其内部缓冲区中累积输出,并在销毁时及显式请求时,将其全部内容原子性地传输到被包装的缓冲区,使其呈现为连续的字符序列。只要所有对同一缓冲区的其他输出都是通过(可能不同的)
       
        std::basic_syncbuf
       
       实例进行的,它就能保证不会出现数据竞争,也不会发生发送到被包装缓冲区的字符交错。
      
       
        std::basic_syncbuf
       
       的典型实现包含以下组件:一个指向被包装的
       
        
         std::basic_streambuf
        
       
       的指针;一个布尔标志,指示缓冲区是否在同步(刷新)时将其内容传输给被包装缓冲区;一个布尔标志,指示当策略设定为不同步发送时是否存在待处理的刷新操作;一个使用
       
        Allocator
       
       的内部缓冲区(例如
       
        
         std::string
        
       
       );以及一个指向互斥量的指针,该互斥量用于在多个访问同一被包装流缓冲区的线程之间同步发送操作(这些互斥量可能存储在以
       
        
         std::basic_streambuf
        
       
       对象指针为键的哈希映射中)。
      
       与其他流缓冲区类相似,
       
        std::basic_syncbuf
       
       通常仅通过对应的流——
       
        
         std::osyncstream
        
       
       进行访问,而非直接操作。
      
提供了多种常见字符类型的类型定义:
| 
          定义于头文件
           
           
            <syncstream>
           
           | |
| 类型 | 定义 | 
| 
          std::syncbuf
          | std :: basic_syncbuf < char > | 
| 
          std::wsyncbuf
          | std :: basic_syncbuf < wchar_t > | 
| 目录 | 
成员类型
| 成员类型 | 定义 | 
| 
          char_type
          | 
          CharT
          | 
| 
          traits_type
          | 
          Traits
         ;若
          Traits::char_type
         不是
          CharT
         则程序非良构。 | 
| 
          int_type
          | 
          Traits::int_type
          | 
| 
          pos_type
          | 
          Traits::pos_type
          | 
| 
          off_type
          | 
          Traits::off_type
          | 
| 
          allocator_type
          | 
          Allocator
          | 
| 
          streambuf_type
          | std:: basic_streambuf < CharT, Traits > | 
成员函数
| 公开成员函数 | |
| 构造 
          basic_syncbuf
         对象(公开成员函数) | |
| 赋值 
          basic_syncbuf
         对象(公开成员函数) | |
| 交换两个 
          basic_syncbuf
         对象(公开成员函数) | |
| 销毁 
          basic_syncbuf
         并发送其内部缓冲区(公开成员函数) | |
| 原子性地将整个内部缓冲区传输到包装的流缓冲区 (公开成员函数) | |
| 获取包装的流缓冲区指针 (公开成员函数) | |
| 获取此 
          basic_syncbuf
         使用的分配器(公开成员函数) | |
| 更改当前同步时发送策略 (公开成员函数) | |
| 受保护成员函数 | |
| 根据当前同步时发送策略,发送缓冲区或记录待处理的刷新 (公开成员函数) | |
非成员函数
| 
           
            
             
              (C++20)
             
            
           
           | 特化
         
          
           std::swap
          
         
         算法 (函数模板) | 
继承自 std:: basic_streambuf
成员类型
| 成员类型 | 定义 | 
| 
           char_type
           | 
           CharT
           | 
| 
           traits_type
           | 
           Traits
          ;如果
           Traits::char_type
          不是
           CharT
          ,则程序非良构。 | 
| 
           int_type
           | 
           Traits::int_type
           | 
| 
           pos_type
           | 
           Traits::pos_type
           | 
| 
           off_type
           | 
           Traits::off_type
           | 
成员函数
| 
            
             
              
               [virtual]
              
             
            
            | 析构 
           basic_streambuf
          对象( 
            std::basic_streambuf<CharT,Traits>
           的虚公开成员函数) | 
| 本地化 | |
| 更改关联的本地化并调用
          
           
            imbue
            
             (
            
            
             ) ( 
            std::basic_streambuf<CharT,Traits>
           的公开成员函数) | |
| 获取关联本地化的副本 ( 
            std::basic_streambuf<CharT,Traits>
           的公开成员函数) | |
| 定位 | |
| 调用
          
           
            setbuf
            
             (
            
            
             ) ( 
            std::basic_streambuf<CharT,Traits>
           的公开成员函数) | |
| 调用
          
           
            seekoff
            
             (
            
            
             ) ( 
            std::basic_streambuf<CharT,Traits>
           的公开成员函数) | |
| 调用
          
           
            seekpos
            
             (
            
            
             ) ( 
            std::basic_streambuf<CharT,Traits>
           的公开成员函数) | |
| 调用
          
           
            sync
            
             (
            
            
             ) ( 
            std::basic_streambuf<CharT,Traits>
           的公开成员函数) | |
| 获取区 | |
| 获取获取区中立即可用的字符数 ( 
            std::basic_streambuf<CharT,Traits>
           的公开成员函数) | |
| 前进输入序列,然后读取一个字符但不再次前进 ( 
            std::basic_streambuf<CharT,Traits>
           的公开成员函数) | |
| 
            
             
             
             
              
               (C++17 中移除)
              
             
            
            | 从输入序列读取一个字符并前进序列 ( 
            std::basic_streambuf<CharT,Traits>
           的公开成员函数) | 
| 从输入序列读取一个字符但不前进序列 ( 
            std::basic_streambuf<CharT,Traits>
           的公开成员函数) | |
| 调用
          
           
            xsgetn
            
             (
            
            
             ) ( 
            std::basic_streambuf<CharT,Traits>
           的公开成员函数) | |
| 放置区 | |
| 向放置区写入一个字符并前进下一个指针 ( 
            std::basic_streambuf<CharT,Traits>
           的公开成员函数) | |
| 调用
          
           
            xsputn
            
             (
            
            
             ) ( 
            std::basic_streambuf<CharT,Traits>
           的公开成员函数 | |
注释
| 功能测试 宏 | 值 | 标准 | 功能 | 
|---|---|---|---|
| 
           __cpp_lib_syncbuf
           | 
           201803L
           | (C++20) | 同步缓冲输出流 ( 
           std::syncbuf
          ,
         
          std::osyncstream
         
         ) 及其操纵器 |