【发布时间】:2011-03-06 16:34:43
【问题描述】:
在美妙的 C# 世界中,我可以创建内存流而无需指定其大小, 写入它,然后只取底层缓冲区。
我如何在 C++ 中做同样的事情?基本上我需要做的:
memory_stream ms(GROW_AS_MUCH_AS_YOU_LIKE);
ms << someLargeObjects << someSmallObjects << someObjectsWhosSizeIDontKnow;
unsigned char* buffer = ms.GetBuffer();
int bufferSize = ms.GetBufferSize();
rawNetworkSocket.Send(buffer, bufferSize);
顺便说一下,虽然我对项目不太熟悉,但我在项目中得到了提升。
谢谢。
【问题讨论】:
-
@Martin:我不,我想创建一个流,填充它,获取底层缓冲区,然后发送它。我也不能使用 boost::socket,我在 WINSOCK API 上使用服装协议,所以我只能发送整个缓冲区。
标签: c++ boost stl stream buffer