我想实现以下具有字符缓冲区的代码,我尝试移植的代码将此字符缓冲区放入流中,然后执行如下操作

 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/

10-11 22:11
查看更多