ストリームから読み取り、以下のように使用する方法を知っています。
strstream s; // It can be another standard stream type
// ...
while (!s.eof())
{
char buf[MAX];
s.read(buf, sizeof (buf));
int count = s.gcount();
THIRD_PARTY_FUNCTION(buf, count);
// ...
}
ただし、このコードには悪用ポイントがあります。最初にストリームからにデータをコピーしてから、buf
に渡しbuf
ますTHIRD_PARTY_FUNCTION
。
コードを以下のようなものにリフォームする方法はありますか(つまり、以下のコードは余分なコピーを回避します)?
strstream s; // It can be another standard stream type
// ...
while (!s.eof())
{
char *buf = A_POINTER_TO_DATA_OF_STREAM(s);
int count = AVAIABLE_DATA_SIZE_OF_STREAM(s);
// Maybe it needs s.seekg(...) here
THIRD_PARTY_FUNCTION(buf, count);
// ...
}