Итак, я создаю поток строк в двоичном режиме. Где-то вдоль линии я больше не хочу рассматривать его как двоичный, а как обычный поток строк.
Просматривая документацию, единственные потоки времени, заботящиеся о том, являются ли они двоичными, входными или выходными (флаги ios_base :: openmode), находятся в стадии разработки. Вы можете изменить флаги манипулятора и флаги ошибок, но, очевидно, не флаги openmode? Может быть, я не смотрю достаточно усердно?
Так что я сейчас делаю что-то вроде
std::stringstream memory( ios_base::in | ios_base::out | ios_base::binary );
boost::iostreams::copy( *source_file, memory );
И где-нибудь вдоль линии я хотел бы иметь возможность сделать что-то вроде
memory.reset_openmode( ios_base::in | ios_base::out );