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