//: C02:Walrus.cpp // From Thinking in C++, 2nd Edition // Available at http://www.BruceEckel.com // (c) Bruce Eckel 2000 // Copyright notice in Copyright.txt // Freezing a strstream #include #include using namespace std; int main() { ostrstream s; s << "'The time has come', the walrus said,"; s << ends; cout << s.str() << endl; // String is frozen // s is frozen; destructor won't delete // the streambuf storage on the heap s.seekp(-1, ios::cur); // Back up before NULL s.rdbuf()->freeze(0); // Unfreeze it // Now destructor releases memory, and // you can add more characters (but you // better not use the previous str() value) s << " 'To speak of many things'" << ends; cout << s.rdbuf(); } ///:~