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 を構築するとバッファ全体にコピーが作成される可能性が高いため、最適であるとは思いません。ただし、istringstream の使用法は問題ないようです。

バッファから直接取得するには、次のようにします。

int bufferPos = 0;

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

ただし、これにより良いインターフェイスを配置したい場合があります。char* を使用して istringstream を構築するためのより良い方法もあるかもしれませんが、ドキュメントをすばやく閲覧しているときに見つけられませんでした。

于 2009-03-01T21:01:03.693 に答える