【发布时间】:2011-08-23 05:57:46
【问题描述】:
我正在使用带有 C++ 的 libcurl(HTTP 传输库)并尝试从远程 HTTP 服务器下载文件。下载文件时,我的回调函数会被调用多次(例如每 10 kb)向我发送缓冲区数据。
基本上我需要“字符串缓冲区”之类的东西,这是一种将char 缓冲区附加到现有字符串的数据结构。在 C 中,我分配 (malloc) 一个 char*,然后随着新缓冲区的到来,我 realloc 然后 memcpy 以便我可以轻松地将缓冲区复制到调整大小的数组。
在 C 中,有多种解决方案可以实现这一点。
- 我可以继续使用
malloc、realloc、memcpy,但我很确定在 C++ 中不推荐使用它们。 - 我可以使用
vector<char>。 - 我可以使用
stringstream。
我的用例是,我将一次附加数千个项目 (chars),在所有项目完成后(下载完成),我将一次性阅读所有项目。但我将来可能需要seek 之类的选项(在数组解决方案(1)中很容易实现),但现在它的优先级很低。
我应该使用什么?
【问题讨论】:
标签: c++ data-structures stl