Care must be taken when using char* stream as a string. In contrast to string streams, char*
streams are not always responsible for the memory used to store the character sequence.
With the member function str(), the character sequence is made available to the caller together
with the responsibility for the corresponding memory. Unless the stream is initialized with a buffer
of fixed size — for which the stream is never responsible — the following three rules have to be
obeyed