В прошлом я использовал stringstream в качестве каналов внутри одного потока (с g ++ 4.5) без проблем. Теперь я попробовал тот же подход, но не могу заставить его работать в g ++ 4.6: проблема в том, что внутренний streambuf
никогда не заполняется за пределами первого байта.
Рассмотрим этот код
#include <iostream>
#include <sstream>
using namespace std;
int main(){
stringstream pipe(ios_base::in|ios_base::out|ios_base::binary);
const char* in="lol";
pipe.write(in, 4);
char out[4]={0};
cout<<pipe.readsome(out, 4)<<" "<<out<<endl;
}
При печати неожиданно выдается «1 л».
Есть ли явные ошибки в моем использовании stringstream? В противном случае я должен сделать вывод, что в g ++ 4.6 STL есть какой-то недостаток.
P.S.
У меня такие же результаты, используя iostream со связанным stringbuf, что в основном и делает stringstream.