Try this:
Code:
#include <iostream>
#include <string>
#include <iterator>
using namespace std;
template< typename Buffer, typename Key >
void xor_buffer( Buffer& buffer, Key const& key )
{
for( typename Buffer::iterator seq = buffer.begin( ), fin = buffer.end( ); seq != fin; ++seq )
{
for( typename Key::const_iterator seq2 = key.begin( ), fin2 = key.end( ); seq2 != fin2; ++seq2 )
{
*seq ^= *seq2;
}
}
}
int main( void )
{
string
key = "ABCDEFGHIJK",
input;
for( ;; )
{
cout << "Enter some text to encode > ";
if( !getline( cin, input ) || input.empty( ) )
break;
xor_buffer( input, key );
copy( input.begin( ), input.end( ), ostream_iterator< string::value_type, char >( cout ) );
cout << endl;
}
return 0;
}