c++ - Transparently manipulating strings inserted into an ostream -


i'd provide std::ostream may or may not, user's point of view, encrypt contents.

imagine random function uses std::ostream&:

void write_stuff( std::ostream& stream ) {     os << "stuff"; } 

whether stuff output in cleartext or encrypted dependent on how stream argument initialized.

i'm thinking inheriting std::basic_streambuf, i'm not sure it's best way go. think ideal scenario sort of filter object run before contents output. way it'd easy chain operations, e.g. encrypting , hex-encoding, benefit making own basic_streambuf not seem give (not @ least).

any advices?

thanks.

update: followed strategy laid out accepted answer. found article on writing custom streambuf performs xor obfuscation extremely helpful starting point.

a streambuf can implemented in terms of arbitrary streambuf that's either passed in argument constructor or set special member function. , allows stack streambuf implementations thinking of.

you make manipulator uses ostream's rdbuf function current streambuf, call function on streambuf sets 'stacked' streambuf, , calls rdbuf again replace ostream's streambuf own.

aes_ctr_streambuf encrypter(key); zlib_streambuf compressor; ::std::cout << stack_streambuf(encrypter) << stack_streambuf(compressor); 

Comments

Popular posts from this blog

ASP.NET/SQL find the element ID and update database -

jquery - appear modal windows bottom -

c++ - Compiling static TagLib 1.6.3 libraries for Windows -