我想实现以下具有字符缓冲区的代码,我尝试移植的代码将此字符缓冲区放入流中,然后执行如下操作
char *buffer; //this is initialized
int bufferSize; //this is initlized
std::istringstream inputStream (std::string(buffer, bufferSize));
int getVal = inputStream.get();
编辑:上面的代码是最佳的,其中对于getVal,您将整个缓冲区复制到流中,然后对流进行获取。
如何从缓冲区本身获取getVal值。
最佳答案
我不认为这是最佳选择,只是因为构造std::string可能会导致整个缓冲区复制。但是,istringstream用法看起来不错。
要直接从缓冲区获取,可以执行以下操作:
int bufferPos = 0;
char getFromBuffer ()
{
if (bufferPos < bufferSize)
{
return buffer[bufferPos++];
}
else
{
return 0;
}
}
不过,您可能希望为此提供更好的界面。也许还有更好的方法来用char *构造一个istringstream,但是我在快速浏览文档时没有看到一个。
关于c++ - 实现istream获取字符缓冲区?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/600428/