【发布时间】:2015-12-10 14:15:18
【问题描述】:
我想编写一个函数,它(简化)将可变大小的输入缓冲区作为参数,(按顺序)处理它,并返回一个固定大小的缓冲区。缓冲区的剩余部分必须留在“管道”中,以便下次调用该函数。
问题 1: 根据我的研究,看起来 iostream 是要走的路,但显然没有人使用它。这是最好的方法吗?
问题 2: 如何全局声明 iostream 对象?实际上,由于我有几个流,我需要将 iostream 对象写入结构向量中。我该怎么做?
目前我的代码如下所示:
struct membuf : std::streambuf
{
membuf(char* begin, char* end) {
this->setg(begin, begin, end);
}
};
void read_stream(char* bufferIn, char* BufferOut, int lengthBufferIn)
{
char* buffer = (char*) malloc(300); //How do I do this globally??
membuf sbuf(buffer, buffer + sizeof(buffer));//How do I do this globally??
std::iostream s(&sbuf); //How do I do this globally??
s.write(bufferIn, lengthBufferIn);
s.read(BufferOut, 100);
process(BufferOut);
}
【问题讨论】:
-
对我来说,你想要达到的目标并不是 100% 清楚,但听起来你应该看看
std::queue或std::deque