C++语言程序设计

ostrstream类支持一个字符数组作为数据传输目的地的输出流，它可以使用我们为它申请的存储空间，这时字节在内存中被格式化；也可以使用自动分配的存储空间。
我们为ostrstream申请存储空间的方法是通过ostrstream有参的构造函数：
ostrstream(char*, int, int=ios::out);
当插入操作超过申请的存储空间的小时，流的bad标志会置位。
如果使用自动分配存储空间的方法，则使用无参的构造函数：
ostrstream os;
当不知道数据需要多少空间时，这是一种很好的方法。这时对象os在堆中分配一块存储空间，并自己维护。当用户输入不断增加，原存储块不够用时，如果有必要，它将移动存储块以分配更多的存储空间。用户可以通过调用成员函数rdbuf()返回缓冲区指针，以访问缓冲区的内容。但是有一个问题：当空间不够，流对象自己移动存储块以分配更多空间时，原来的缓冲区指针已经失效，但是用户是不知道的，因为流对象自己负责维护存储空间。ostrstream处理这个问题的方法是"冻结"自己。用户通过str()函数返回指向输出流内容的字符数组的指针，并将自己"冻结"。用户不能再它添加字符，ostrstream对象也不再负责存储空间的自动释放，必须由用户自己清理存储器：
delete os.str();
如果想添加更多的字符，一般的做法是新建一个ostrstream，将旧的流灌入新流中，并向新流添加字符。