Here we'll see some of the not-so-well-known features of Boost.Asio. The std streams and streambuf objects are sometimes a bit more complicated to use, but as you'll see, they bring their own benefits to the table. Finally, you'll see a rather late entry to Boost.Asio's co-routines, which allow you to have a code that is asynchronous but is easy to read (as if it was synchronous). It's quite an amazing feature!
You should be familiar with STL streams and STL
streambuf objects in order to read this section.
Boost.Asio allows for two types of buffers when dealing with I/O:
This buffer surrounds a Boost.Asio operation (the buffers we use are passed to the Boos.Asio ...