【发布时间】:2010-12-24 20:46:53
【问题描述】:
我不完全是 C++ 新手,但过去我很少认真处理它,所以我对其设施的了解相当粗略。
我正在用 C++ 编写一个快速的概念验证程序,我需要一个动态大小的二进制数据缓冲区。也就是说,我要从网络套接字接收数据,但我不知道会有多少(虽然不超过几 MB)。我可以自己编写这样的缓冲区,但是如果标准库可能已经有了一些东西,为什么还要打扰呢?我使用的是 VS2008,所以一些微软特定的扩展对我来说很好。我只需要四个操作:
- 创建缓冲区
- 将数据写入缓冲区(二进制垃圾,不以零结尾)
- 将写入的数据作为 char 数组获取(连同其长度)
- 释放缓冲区
类/函数集/我需要什么的名称是什么?
添加:std::vector 投了几票。一切都很好,但我不想逐字节推送几 MB 的数据。套接字将以几 KB 的大块向我提供数据,所以我想一次将它们全部写入。此外,最后我需要将数据作为简单的 char* 获取,因为我需要将整个 blob 传递给一些未修改的 Win32 API 函数。
【问题讨论】:
-
您不是逐字节推送。您可以在向量的末尾插入一个数据块。
标签: c++ memory-management stl dynamic buffer