StrBuf::operator <<( const StrPtr & )
Append a StrPtr
to a StrBuf
. The argument is
passed as a reference of the StrPtr
. The string pointed to
by the StrPtr
's buffer
is logically appended to
the string pointed to by the StrBuf
's
buffer
.
Virtual? |
No |
|
Class |
||
Arguments |
|
(implied) reference of the |
Returns |
|
reference of the |
Notes
Arguments are typically instances of classes derived from the
StrPtr
class, such as StrRef
and
StrBuf
.
Exactly the number of bytes specified by the length
of the
StrPtr
are appended to the StrBuf
from the
StrPtr
. The length
of the StrBuf
is incremented by the length
of the StrPtr
.
If the memory for the StrBuf
's buffer
is not
large enough, new contiguous memory is allocated to contain the results
of appending the StrPtr
. If new memory is allocated, the old
memory is freed. Any memory allocated is separate from the memory for the
StrPtr
.
Example
#include <iostream>
#include <stdhdrs.h>
#include <strbuf.h>
int main( int argc, char **argv )
{
StrRef sr( "zy" );
StrPtr *sp = &sr;
StrBuf sba;
StrBuf sbb;
sba.Set( "xyzzy" );
sbb.Set( "xyz" );
cout << "sba.Text() after sba.Set( \"xyzzy\" ) returns ";
cout << "\"" << sba.Text() << "\"\n";
cout << "sba.Length() after sba.Set( \"xyzzy\" ) returns ";
cout << sba.Length() << "\n";
cout << "sbb.Text() after sbb.Set( \"xyz\" ) returns ";
cout << "\"" << sbb.Text() << "\"\n";
cout << "sbb.Length() after sbb.Set( \"xyz\" ) returns ";
cout << sbb.Length() << "\n";
sbb << sr; // append StrRef to StrBuf
cout << "sbb.Text() after sbb << sr returns ";
cout << "\"" << sbb.Text() << "\"\n";
cout << "sbb.Length() after sbb << sr returns ";
cout << sbb.Length() << "\n";
sba << sbb; // append StrBuf to StrBuf
cout << "sba.Text() after sba << sbb returns ";
cout << "\"" << sba.Text() << "\"\n";
cout << "sba.Length() after sba << sbb returns ";
cout << sba.Length() << "\n";
}
Executing the preceding code produces the following output:
sba.Text() after sba.Set( "xyzzy" ) returns "xyzzy" sba.Length() after sba.Set( "xyzzy" ) returns 5 sbb.Text() after sbb.Set( "xyz" ) returns "xyz" sbb.Length() after sbb.Set( "xyz" ) returns 3 sbb.Text() after sbb << sr returns "xyzzy" sbb.Length() after sbb << sr returns 5 sba.Text() after sba << sbb returns "xyzzyxyzzy" sba.Length() after sba << sbb returns 10