我正在研究basic_streambuf
处理从/向 Winsock 套接字读取和写入的问题。就像basic_filebuf
,我在内部使用一个std::codecvt
对象将从底层套接字读取的字节转换为“套接字流缓冲区”的字符类型,并将写入套接字流缓冲区的字符转换为可以写入底层套接字的字节。为了做到这一点,我发现我需要为 streambuf 的读取和写入功能维护缓冲区。
我遇到的逻辑问题是 streambuf 实现旨在用于读取和写入(std::iostream
构造函数采用单个指向 streambuf 的指针),但只有一个可覆盖的成员函数可以自定义用于设置底层字符缓冲区:setbuf
。如果我想允许我的套接字 streambuf 模板的用户设置底层缓冲区,应该setbuf
设置读取缓冲区还是写入缓冲区?哪个选项更有意义?