我似乎无法找到什么使用()和提交()的真正含义的一个很好的解释,实际上我根本不理解streambuf。boost streambuf消耗和提交,它是什么
我的理解是streambuf只是一个字符数组。但为什么在文档中,
basic_streambuf::data
Get a list of buffers that represents the input sequence.
所以实际上有很多缓冲区?什么是“输入序列”和“输出序列”?这是另外两个缓冲区吗?
下面的代码实际上做了什么?
streambuf b;
size_t size;
size = read(socket, b.prepare(1024));
b.commit(size);
size = write(socket, b.data());
b.consume(size);
当我调用b.prepare()时,它是否为read()分配一个新缓冲区来放置数据?那么数据何时从该缓冲区传输到底层streambuf缓冲区?我认为这是提交(),但
basic_streambuf::commit
Move characters from the output sequence to the input sequence.
如此看来,实际上承诺从为“输入序列”的“输出序列”而没有提及用来存储数据的基础缓冲区移动数据!