Oracle Solaris Studio 12.4 Man Pages

Exit Print View

Updated: January 2015
 
 

strstream(3CC4)

Name

strstream - 用于使用字符数组的 "I/O" 的流类

Synopsis

 
#include <strstream.h>
class ios {
public:
     enum open_mode  { in, out, ate, app, trunc, nocreate, noreplace };
     // see ios(3CC4) for remainder ...
};
#include <strstream.h> // includes <iostream.h>
class  strstreambuf : public streambuf {
     // see strstreambuf(3C++) ...
};
class strstreambase : virtual public ios {
     // implementation detail of the Xstream classes ...
};
class istrstream : public strstreambase, public istream {
public:
     istrstream(char* ptr);
     istrstream(char* ptr, int len);
     strstreambuf* rdbuf();
};
class ostrstream : public strstreambase, public ostream {
public:
     ostrstream(char* ptr, int len, int mode=ios::out);
     ostrstream();
     strstreambuf* rdbuf();
     int  pcount();
     char*     str();
};
class strstream : public strstreambase, public iostream {
public:
     strstream();
     strstream(char* ptr, int len, int mode);
     strstreambuf* rdbuf();
     char*     str();
};

Description

istrstreamostrstreamstrstream 分别是类 istreamostreamiostream 的特例,适用于使用内存中字符数组的 I/O。也就是说,关联的 streambuf 是一个 strstreambuf

辅助类 strstreambase 是一个实现细节,主要是提供了一组通用函数。不再进一步对其进行讨论。

istrstream 成员

istrstream(ptr)

假定 ptr 指向以空字符结尾的字符数组,该数组将用作输入源。空字符不是输入的一部分。允许在数组范围内使用 seekg() 进行查找。

istrstream(ptr, len)

假定 ptr 指向长度为 len 的字符数组,该数组将用作输入源。允许在数组范围内使用 seekg() 进行查找。

strstreambuf* ssbp = iss.rdbuf()

返回指向与 iss 关联的 strstreambuf 的指针。这与此函数的基类版本相同,但是返回类型比较特别,是一个 strstreambuf*

ostrstream 成员

ostrstream()

创建一个空的输出流,它将使用动态的(可扩展的)字符数组(请参见 ssbuf(3CC4))。允许在数组的当前边界内进行查找。此流之后可能将通过 str() 转换为 char*(请参见下文)。

ostrstream(ptr, len, mode)

使用以 ptr 开头的 len 字符的静态(不可扩展的)数组创建一个输出流。如果在 mode 中设置了 ios::ateios::app 位(请参见 ios(3CC4)),则会假定数组包含一个开头位于 ptr 的以空字符结尾的字符串。字符将从空字符处从开始存储,但是决不会超过 len 个字符。如果 mode 中未设置那些位,则会假定数组不包含任何数据,并且字符将从 ptr 处开始存储。允许在数组范围内进行查找。

strstreambuf* ssbp = oss.rdbuf()

返回指向与 oss 关联的 strstreambuf 的指针。这与此函数的基类版本相同,但是返回类型比较特别,是一个 strstreambuf*

int n = oss.pcount()

返回数组中存储的字符数。当数组包含二进制数据或者未以空字符结尾时,这尤其有用。

char* ptr = oss.str()

将指针返回到基础数组的起始位置,并冻结流。如果数组是动态分配的,则现在不会自动将其删除或者使其以空字符结尾,并且它将不再可扩展(请参见 strstreambuf 中的 freeze())。在调用 str() 之前,当销毁 streambuf 时将自动释放动态分配的数组。之后,将由用户负责数组并决定何时释放它。

strstream 成员

strstream()

创建一个空的双向输出流,它将使用动态的(可扩展的)字符数组(请参见 ssbuf(3CC4))。允许在数组的当前边界内进行查找。

strstream(ptr, len, mode)

使用以 ptr 开头的 len 字符的静态(不可扩展的)数组创建一个双向流。如果在 mode 中设置了 ios::ateios::app 位(请参见 ios(3CC4)),则会假定数组包含一个开头位于 ptr 的以空字符结尾的字符串。字符将从空字符处从开始存储,但是决不会超过 len 个字符。如果 mode 中未设置那些位,则会假定数组不包含任何数据,并且字符将从 ptr 处开始存储。允许在数组范围内进行查找。

strstreambuf* ssbp = ss.rdbuf()

返回指向与 ss 关联的 strstreambuf 的指针。这与此函数的基类版本相同,但是返回类型比较特别,是一个 strstreambuf*

char* ptr = ss.str()

将指针返回到基础数组的起始位置,并冻结流。如果数组是动态分配的,则现在不会自动将其删除或者使其以空字符结尾,并且它将不再可扩展(请参见 strstreambuf 中的 freeze())。在调用 str() 之前,当销毁 streambuf 时将自动释放动态分配的数组。之后,将由用户负责数组并决定何时释放它。

See also

ios (3CC4) 、 ios.intro (3CC4) 、 istream (3CC4) 、 ostream (3CC4) 、 sbufpub (3CC4) 、 ssbuf (3CC4)

《C++ Library Reference》中的第 3 章 "The Classic iostream Library"