1

我想实现以下有一个字符缓冲区,我试图移植的代码将此字符缓冲区放在一个流中,然后像这样

 char *buffer; //this is initialized
 int bufferSize;  //this is initlized
 std::istringstream inputStream (std::string(buffer, bufferSize));
 int getVal = inputStream.get();

编辑:上面的代码是最优的,其中对于 getVal 你将整个缓冲区复制到一个流中,然后在流上做一个 get 。

如何从缓冲区本身获取 getVal 值。

4

1 回答 1

1

我不相信它是最优的,仅仅因为构造一个 std::string 可能会导致整个缓冲区的副本。然而,istingstream 的用法看起来不错。

要直接从缓冲区中获取,您可以执行以下操作:

int bufferPos = 0;

char getFromBuffer ()
{
  if (bufferPos < bufferSize)
  {
    return buffer[bufferPos++];
  }
  else
  {
    return 0;
  }
}

不过,您可能希望为此提供更好的界面。也可能有一种更好的方法来构造带有 char* 的 istringstream,但我在快速浏览文档时没有看到。

于 2009-03-01T21:01:03.693 回答