Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::basic_osyncstream<CharT,Traits,Allocator>::basic_osyncstream

      From cppreference.com
      <cpp‎ |io‎ |basic osyncstream
       
       
       
       
      basic_osyncstream( streambuf_type* buf,const Allocator& a);
      (1)
      explicit basic_osyncstream( streambuf_type* buf);
      (2)
      basic_osyncstream(std::basic_ostream<CharT, Traits>& os,const Allocator& a);
      (3)
      explicit basic_osyncstream(std::basic_ostream<CharT, Traits>& os);
      (4)
      basic_osyncstream(std::basic_osyncstream&& other)noexcept;
      (5)

      Constructs new synchronized output stream.

      1-4) Constructs the private memberstd::basic_syncbuf using the buffer and the allocator provided, and initializes the base class with a pointer to the memberstd::basic_streambuf.
      5) Move constructor. Move-constructs thestd::basic_ostream base and the std::basic_syncbuf member from the corresponding subobjects ofother, then callsset_rdbuf with the pointer to the newly-constructed underlyingstd::basic_syncbuf to complete the initialization of the base. After this move constructor,other.get_wrapped() returnsnullptr and destruction ofother produces no output.

      [edit]Parameters

      buf - pointer to thestd::basic_streambuf that will be wrapped
      os - reference to astd::basic_ostream, whose rdbuf() will be wrapped
      a - the allocator to pass to the constructor of the memberstd::basic_syncbuf
      other - another osyncstream to move from

      [edit]Example

      Run this code
      #include <iostream>#include <string_view>#include <syncstream>#include <thread> void worker(constint id,std::ostream&os){std::string_view block;switch(id){default:[[fallthrough]];case0: block="██";break;case1: block="▓▓";break;case2: block="▒▒";break;case3: block="░░";break;}for(int i=1; i<=50;++i)        os<< block<<std::flush;    os<<std::endl;} int main(){std::cout<<"Synchronized output should not cause any interference:"<<std::endl;{auto scout1=std::osyncstream{std::cout};auto scout2=std::osyncstream{std::cout};auto scout3=std::osyncstream{std::cout};auto scout4=std::osyncstream{std::cout};auto w1=std::jthread{worker,0,std::ref(scout1)};auto w2=std::jthread{worker,1,std::ref(scout2)};auto w3=std::jthread{worker,2,std::ref(scout3)};auto w4=std::jthread{worker,3,std::ref(scout4)};} std::cout<<"\nLack of synchronization may cause some interference on output:"<<std::endl;{auto w1=std::jthread{worker,0,std::ref(std::cout)};auto w2=std::jthread{worker,1,std::ref(std::cout)};auto w3=std::jthread{worker,2,std::ref(std::cout)};auto w4=std::jthread{worker,3,std::ref(std::cout)};}}

      Possible output:

      Synchronized output should not cause any interference:░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓████████████████████████████████████████████████████████████████████████████████████████████████████ Lack of synchronization may cause some interference on output:████▓▓██▒▒▒▒▓▓██░░▒▒██░░▒▒░░░░▒▒░░▓▓▒▒██░░████████████▓▓██████▓▓▒▒▓▓██░░████▓▓▓▓██▒▒░░░░░░░░▓▓░░▓▓██▒▒▒▒▒▒▒▒▓▓██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░▒▒▒▒░░▒▒▒▒▒▒▒▒▒▒▓▓▒▒▒▒▒▒▒▒▒▒▒▒██░░░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓████████▓▓▓▓▓▓▓▓▓▓▓▓░░▓▓▓▓▒▒▒▒██░░██████████████████████████░░░░░░░░░░░░░░██░░▒▒░░░░░░██████████████████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒░░░░░░

      [edit]See also

      constructs abasic_syncbuf object
      (public member function ofstd::basic_syncbuf<CharT,Traits,Allocator>)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/io/basic_osyncstream/basic_osyncstream&oldid=158552"

      [8]ページ先頭

      ©2009-2025 Movatter.jp