2009-03-01 1 views
1

私は次のように実装するには、文字バッファと私はポートにしようとしているコードは、ストリームにこの文字バッファを入れてきたし、このistream getキャラクタバッファを実装しますか?

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

EDITように取得ん:上記のコードが最適である、前記getValの場合、バッファ全体をストリームにコピーした後、ストリームを取得します。

バッファからgetVal値を取得するにはどうすればよいですか?

答えて

1

std :: stringを構築すると、バッファ全体にコピーが作成される可能性があるため、最適ではないと思います。しかし、istringstreamの使用法はうまく見えます。あなたはしかし、この上でより良いインターフェースを置きたいと思うかもしれ

int bufferPos = 0; 

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

:あなたはこのような何かを行うことができ、バッファから直接取得するには

。 char *を使ってistringstreamを構築するより良い方法があるかもしれませんが、ドキュメントをすばやくブラウズしているときには表示されませんでした。

+0

マイナーニックピック:EOFで-1を返すべきではありませんか? –

関連する問題