APÉNDICE G BIBLIOTECA DE CLASES ANSI/ISO C++ CONTENIDO G.1. G.2. G.3. G.4. G.5. G.6. G.7. G.8. G.9. Clase filebuf. Clase fstream. Clase fstreambase. Clase ifstream. Clase ios. Clase iostream. Clase iostream_withassign. Clase istream. Clase istream_withassign. La biblioteca de clases de C++ consta de diferentes clases. Esta referencia presenta en orden alfabético las funciones miembro más frecuentemente utilizadas de la jerarquía de clases. Como ya conoce el lector, a las clases se accede a través de la inclusión de archivos. La Tabla G.1 lista los archivos de cabecera relativos a clases, con indicación de las clases asociadas a cada uno de ellos. Deberá incluir el correspondiente archivo de cabecera cuando desee manejar una clase incluida en el mismo . TABLA G.1. Archivo G.10. G.11. G.12. G.13. G.14. G.15. G.16. G.17. G.18. Clase istrstream. Clase ofstream. Clase ostream. Clase ostream_withassign. Clase ostrstream. Clase streambuf. Clase strstreambase. Clase strstreambuf. Clase strstream. Archivo de cabecera: Constructores/Destructores: Funciones miembro Archivos de cabecera estándar Clases incluidas constrea.h Conbuf, constream. iostream.h ios, iostream, iostream_withssing, istream, #include <fstream.h> filebuf ~filebuf attach close fd is_open open overflow seekoff setbuf sync underflow istream_witassing, ostream, ostream_withassing, streambuf. fstream.h srstrea.h G.1. filebuf, fstream, fstreambase, ifstream, ofstream. istrstream, ostrstream, strstream, strstreambase, strstreambuf CLASE FILEBUF attach filebuf::attach filebuf* attach(int da); Conecta el objeto filebuf a una descripción de archivo abierto. Clase especializada para E/S por archivos de disco a través de buffer. close class filebuf:public streambuf filebuf* close(); filebuf::close 666 PROGRAMACIÓN EN C++. ALGORITMOS, ESTRUCTURAS Y OBJETOS Limpia y cierra el archivo. Si ocurre un error, la función devuelve NULL; si no hay error, la función devuelve la dirección del objeto filebuf. fd filebuf::fd filedesc fd() const; Devuelve el descriptor del archivo asociado con el objeto filebuf; filedesc es un tipo definido por el usuario (typedef) equivalente a int. Si el objeto no está conectado a un archivo la función devuelve EOF. Atributo Significado 0 1 2 4 8 Archivo normal, acceso abierto. Archivo de sólo lectura. Archivo oculto. Archivo del sistema. Establecer bit de archivar. overflow filebuf::overflow virtual int overflow(int c = EOF); filebuf filebuf::filebuf filebuf(); filebuf(int da); filebuf(int da, char *pr, int n); seekoff Construye un objeto filebuf: (1) el objeto no se conecta a un archivo, (2) el objeto se conecta a un archivo abierto, (3) el objeto se conecta a un archivo abierto y lo inicializa para utilizar una zona de reserva especificada. is_open filebuf::is_open int is_rtl_open(); Devuelve un valor distinto de cero si el archivo está abierto; en caso contrario, 0. open Limpia un buffer hacia su destino. Cada clase derivada debe definir las acciones que se tomen. filebuf::open filebuf::seekoff virtual streampos seekoff(streamoff, ios::seek_dir, int) Mueve el puntero (apuntador) relativo del archivo a la posición actual. setbuf filebuf::setbuf virtual streambuf* setbuf(char *, int); Especifica un buffer para este filebuf. sync filebuf::sync filebuf* open(const char* nomarch, int modo, int prot = filebuf::openprot); virtual int sync(); Abre el archivo especificado y se conecta a él. Modo determina cómo se abre el archivo y debe ser uno (o más) de estos valores: Establece consistencia entre estructuras de datos internas y la representación externa de flujo. ios::app ios::ate ios::binary ios::in ios::nocreate ios::noreplace ios::out ios::trunc prot especifica el atributo del archivo underflow filebuf::underflow virtual int underflow(); Hace disponible la entrada. Ésta se llama cuando no existe ningún dato más en el buffer de entrada. Cada clase derivada debe definir las acciones a tomar. BIBLIOTECA DE CLASES ANSI/ISO C++ G.2. CLASE FSTREAM class fstreambase::public ios La clase fstream es una clase derivada de iostream, especializada para entrada y salida combinada de archivos en disco. Funciones miembro: Archivo de cabecera Constructores/Destructores Funciones miembro class fstream:public iostream Archivo de cabecera: Constructores/Destructores: 667 #include <fstream.h> fstream (construye un objeto fstream) ~fstream (destruye un objeto fstream) open rdbuf attach open fstream::open void open(const char *, int, int = filebuf::openprot); <fstream.h> fstreambase(); ~fstreambase(); attach close open rdbuf setbuf fstreambase::attach void attach(int); Conecta este flujo al descriptor de archivos abierto. Abre un archivo para un objeto fstream. close fstream fstream::fstream fstream(); fstream(const char *, int, int = filebuf::openprot); fstream(int); fstream(int, char *, int); La función constructor tiene cuatro formatos: (1) construye un fstream que no se conecta a un archivo, (2) construye un fstream, abre un archivo y lo conecta, (3) construye un fstream y lo conecta a un descriptor de archivo abierto, (4) construye un fstream conectado a un archivo abierto y fstreambase::close void close(); Cierra el objeto filebuf asociado y el archivo. open fstreambase::open void open(const char *, int, int = filebuf::openprot); Abre un archivo para un streambase. utiliza un archivo especificado. rdbuf rdbuf fstreambase::rdbuf fstream::rdbuf filebuf* rdbuf(); filebuf*rdbuf(); Devuelve el filebuf utilizado. Devuelve un puntero al objeto filebuf, que se asocia con este flujo. G.3. CLASE FSTREAMBASE setbuf void setbuf(char*, int); Esta clase de flujo, derivada de ios, proporciona operaciones comunes a flujos de archivo. Sirve como base para fstream, ifstream y ofstream. Utiliza un buffer especificado. fstreambase::setbuf 668 PROGRAMACIÓN EN C++. ALGORITMOS, ESTRUCTURAS Y OBJETOS fstreambase fstreambase::fstreambase fstreambase(); fstreambase(const char*, int, int = filebuf::openprot); fstreambase(int); fstreambase(int, char*, int); (1) construye un objeto fstreambase que no se conecta a un archivo, (2) construye un objeto streambase, abre un archivo y lo conecta, (3) construye un objeto fstreambase y lo conecta a un descriptor de archivo abierto, (4) construye un fstreambase conectado a un archivo abierto y utiliza un buffer especificado. G.4. CLASE IFSTREAM La clase ifstream es una clase derivada de fstreambase e istream, proporciona operaciones de entrada para archivos en disco. Sus constructores crean automáticamente y conectan a un objeto filebuf. class ifstream:public istream Archivo de cabecera: Constructores/Destructores: Funciones miembro: ifstream #include <fstream.h> ifstream (construye un objeto ifstream) ~ifstream (destruye un objeto ifstream) open rdbuf rdbuf ifstream::rdbuf filebuf* rdbuf(); Devuelve un puntero al objeto de buffer que está asociado con este flujo. G.5. CLASE IOS La clase ios es la clase base de todas las clases de flujos de entrada/salida. Proporciona operaciones de entrada y salida. Sus clases derivadas (istream, ostream e iostream) se especializan en operaciones con formatos de E/S. La clase ios es una clase base de istream, ostream, fstreambase y strstreambase. Aunque ios no es técnicamente una clase base abstracta, se podrán utilizar muchas de las funciones miembro y miembros dato heredados. class ios Archivo de cabecera: #include <iostream.h> Constructores/Destructores: ios() (constructor para usar en clases derivadas) ~ios (destructor virtual) Funciones miembro: bad bitalloc clear fail flags init rdbuf setf sync_with_stdi unsetf xalloc ifstream::ifstream ifstream(); ifstream(const char*, int = ios::in, int = filebuf::openprot); ifstream(int fd, char*, int); Construye un objeto ifstream: (1) construye un ifstream que no se conecta a un archivo, (2) construye un ifstream, abre un archivo de entrada en modo protegido y lo conecta a él, (3) construye un ifstream y lo conecta a un descriptor de archivo abierto, (4) construye un ifstream conectado a un archivo abierto y utiliza un buffer especificado. open bad eof fill good precision rdstate setstate Atie width ios::bad int bad(); Devuelve true (verdadero) si ha ocurrido un error fatal de E/S en el flujo asociado; en caso contrario, se devuelve 0. ifstream::open void open(const char*, int, int = filebuf::openprot); Abre un archivo de disco y lo conecta al objeto filebuf del flujo. bitalloc static long bitalloc(); ios::bitalloc BIBLIOTECA DE CLASES ANSI/ISO C++ Proporciona una máscara para un bit no utilizado anteriormente en el miembro dato. El valor de retorno se puede utilizar para establecer, borrar y comprobar el indicador. clear 669 El primer formato devuelve los indicadores de formato reales. El segundo formato fija los indicadores de formato asociados con un flujo como el especificado por f. ios::clear good ios::good void clear(int flags = 0); int good(); Borra los indicadores de estado asociados con un flujo. Si flags es 0 (valor por defecto), se borran todos los indicadores de error (se ponen a 0). En caso contrario, los indicadores de estado se ponen a cualquier valor especificado en flags. Devuelve un valor distinto de cero (verdadero) si ningún error de E/S se ha producido en el flujo asociado; en caso contrario, se devuelve 0. init eof ios::init ios::eof void init(streambuf *); int eof(); Proporciona la inicialización real. Devuelve true (verdadero) cuando se encuentra el fin del archivo de entrada asociado; en caso contrario, se devuelve 0. precision fail ios::fail ios::precision int precision (); int precision(int p); int fail(); Devuelve true (verdadero, distinto de cero) si se ha producido un error en la operación; en caso contrario, se devuelve 0. El primer formato devuelve la precisión real de coma flotante (sin dígitos se visualizan después del punto decimal). Con el segundo formato se puede establecer la precisión (el número de dígitos) al valor especificado en p. fill rdbuf ios::fill char fill(); char fill(char car); streambuf* rdbuf(); Cuando un campo necesita rellenarse, se rellena, por defecto, con blancos. Sin embargo, se puede especificar el carácter de rellenado utilizando la función fill()y especificando el nuevo carácter de rellenado en car. El primer formato devuelve el carácter de relleno actual. Devuelve un puntero al objeto streambuf, que está asociado con este flujo. La función rdbuf es útil cuando se necesita llamar a funciones miembro streambuf. rdstate flags long flags(); long flags(long f); ios::rdbuf ios::flags ios::rdstste int rdstate(); Devuelve el estado real del flujo asociado, especificado por las siguientes máscaras o indicadores: 670 PROGRAMACIÓN EN C++. ALGORITMOS, ESTRUCTURAS Y OBJETOS Nombre ios::goodbit ios::eoffbit ios::failbit ios::badbit Significado 0, no se produce ningún error. 1, se produce un error. 1, cuando se encuentra el final del archivo. 0, caso contrario. 1, se ha producido un error no fatal de E/S. 0, caso contrario. 1, se ha producido un error fatal de E/S. O, caso contrario. setf ios::setf long setf(long flags); long setf(long flags1, long flags2); La primera función enlaza (une) este flujo al ostream especificado y devuelve el valor del anterior puntero enlazado (NULL, si este flujo no estaba previamente enlazado). La segunda función devuelve el valor del anterior puntero enlazado (NULL si este flujo no estaba previamente enlazado). unsetf ios::unsetf long unsetf(long flags); Borra los bits correspondientes a los marcados en el parámetro flags; devuelve la configuración anterior. width Establece los indicadores correspondientes a los señalados en el parámetro flags; devuelve los parámetros anteriores. El segundo formato afecta sólo a los indicadores (flags) que se establecen en flags2. Los indicadores correspondientes se ponen primero a cero y a continuación se ponen a 1, de acuerdo a los indicadores especificados por indicadores1. Ambos formatos de setf() devuelven la configuración anterior de los indicadores de formato asociados con el flujo. ios::width int width(); int width(int a); La primera función obtiene la anchura del campo actual. La segunda función establece la anchura del campo y se devuelve la anchura del campo anterior. xalloc setstate ios::setstate ios::xalloc static int xalloc(); Devuelve un índice de array de palabras anteriormente no utilizadas, que se pueden utilizar como indicadores de formato definidos por el usuario. protected:void saetstate(int); Pone a uno todos los bits de estado. G.6. sync_with_stdio ios:: sync_with_stdio static void sync_with_stdio(); Mezcla archivos stdio e iostream.. CLASE IOSTREAM Esta clase, derivada de istream y ostream, es simplemente una mezcla de sus clases base, permitiendo entrada y salida sobre un flujo. Se pueden utilizar objetos iostream para E/S secuencial en disco si se construye primero un objeto filebuf apropiado. class iostream:public istream, public ostream tie ostream* tie(); ostream* tie(ostream*); ios::tie Archivo de cabecera: Constructores/Destructores: #include <iostream.h> iostream (construye un objeto iostream que se conecta a un streambuf existente) ~iostream (destruye un objeto iostream) BIBLIOTECA DE CLASES ANSI/ISO C++ iostream iostream::iostream 671 Devuelve el número de caracteres extraído por la última función de entrada sin formato. iostream(streambuf*); virtual ~iostream(); get La primera función construye un objeto de tipo iostream. La segunda función es un destructor virtual para la clase iostream. G.7. Esta clase es una subclase de iostream con un operador de asignación añadido. #include <iostream.h> iostream_withassign ~iostream_withassign iostream_withassign iostream_withassign(); ~iostream_withassign(); Construyen y destruyen un objeto. G.8. int get(); istream& get(signed char*, int num, char separ = ´\n´); istream& get(unsigned char*, int num, char separ = ´\n´); CLASE IOSTREAM_WITHASSIGN Archivo de cabecera: Constructores/Destructores: istream::get CLASE ISTREAM istream& get(signed char&); istream& get(unsigned char&); istream& get(strambuf&, char = ´\n ´); get() lee caracteres de un flujo de entrada. En particular, get sin parámetros lee un único carácter del flujo asociado y devuelve ese valor. El formato de get, que toma tres parámetros, lee caracteres del flujo hasta que o bien num caracteres se han leído, o el carácter especificado por separ se ha encontrado, o se alcanza el final del archivo. Los caracteres se almacenan en el array seguido por un carácter nulo. El formato con un solo parámetro extrae un único carácter de flujo y lo almacena en el especificado por el argumento de referencia. Por último, el formato con dos parámetros lee caracteres del flujo de entrada en el objetivo streambuf (o derivado). Los caracteres se leen hasta que se encuentra el separador especificado. Devuelve una referencia al flujo. La clase istream proporciona la aptitud básica para entrada secuencial y acceso aleatorio. getline class istream:virtual public ios istream& getline(signed char *bufer, int, char = ´\n´); istream& getline(unsigned char *bufer, int, char = ´\n´); Archivo de cabecera: Constructor/Destructor: Funciones miembro: #include <iostream.h> istream (construye un objeto istream conectado a un objeto existente de una clase derivada de streambuf). istream (destruye un objeto istream) gcount get getline ignore peek putback read seekg tellg istream::getline Actúa igual que get, con la diferencia de que también se extrae el separador, que no se copia en buffer. ignore istream::ignore istream& ignore(int num = 1, int separ = EOF); gcount int gcount(); istream::gcount Lee y descarta caracteres del flujo de entrada, hasta que o bien se han ignorado num caracteres (1, por defecto) o hasta que el carácter especificado por separ (EOF, por defecto) se encuentra. 672 PROGRAMACIÓN EN C++. ALGORITMOS, ESTRUCTURAS Y OBJETOS istream istream:istream istream::~istream 1. istream(streambuf *); 2. virtual ~istream(); (1) construye un objeto de una clase derivada de streambuf. (2) destructor virtual de la clase istream. ción del cursor. El origen es de tipo ios::seek_dir y es una enumeración que toma estos valores: enum seek_dir ios:: beg ios::cur ios::end {beg, cur, end}; Búsqueda desde el principio. Búsqueda desde la posición actual. Búsqueda desde el final. tellg peek istream::peek istream::tellg streampos tellg(); Devuelve la posición actual del flujo. int peek(); Devuelve el siguiente carácter del flujo, sin extraerlo del flujo. Devuelve EOF, si se encuentra el final del archivo. G.9. putback Esta clase es una subclase de istream_withassign con la adición de un operador de asignación. El objeto predefinido cin es un objeto de esta clase y se puede reasignar en tiempo de ejecución a un objeto diferente istream. istream::putback istream& putback (char car); class istream_withassign:public istream Devuelve el carácter car al flujo de entrada asociado; car debe ser el último carácter leído de ese flujo. read istream::read 1. istream & read(signed char* buf, int num); 2. istream & read(unsigned char* buf, int num); Lee num bytes del flujo de entrada asociado y los pone en el buffer apuntado por buf. Si se alcanza el final del archivo antes de que se hayan leído num caracteres, read() se detiene y el buffer contiene tantos caracteres como estuvieran disponibles. Si se produce un error, utilice gcount(). La función read es útil para entradas de flujo binarias. sekg CLASE ISTREAM_WITHASSIGN istream::seekg 1. istream& seekg(streampos); 2. istream& seekg(streampos, seek_dir); Archivo de cabecera: #include <iostream.h> Constructor/Destructor: istream_withassign(); (crea un objeto) ~istream_withassign(); (destruye un objeto) Funciones miembro: Ninguna (aunque el operador = está sobrecargado) G.10. CLASE ISTRSTREAM Soporta flujos de entrada que tienen arrays de caracteres como fuente. class istrstream:public istream Archivo de cabecera: Constructor/Destructor: G.11. #include <strstream.h> istrstream(const char *); ~istrstream(const char *, int n); CLASE OFSTREAM Esta clase es una clase derivada de ostream, que proporciona operaciones de entrada en un filebuf. (1) mueve el puntero del archivo a una posición absoluta (devuelta por tellg). (2) mueve el puntero del archivo a una posición relativa a la posi- class ofstream:public ostream BIBLIOTECA DE CLASES ANSI/ISO C++ Archivo de cabecera: Constructor/Destructor: Funciones miembro: #include <fstream.h> ofstream (construye un objeto ofstream) ~ofstream (destruye un objeto ofstream) open rdbuf open ofstream::open void open(const char *, int = ios::out, int = filebuf::openprot); Abre un archivo para un ofstream. rdbuf ostream::put ostream& put(char) La función put inserta un carácter en el flujo de salida. Devuelve una referencia al flujo. seekp ostream::seekp 1. ostream& seekp(streampos); 2. ostream& seekp(streamoff, seek_dir); ofstream::rdbuf filebuf* rdbuf(); Devuelve el filebuf utilizado. G.12. put 673 (1) se mueve a una posición absoluta. (2) se mueve a una posición relativa a la posición actual, a continuación de la definición. La dirección de búsqueda se especifica por el tipo enumerado enum seek_dir(beg, cur, end); Valor CLASE OSTREAM Proporciona características para salida secuencial y acceso aleatorio. ios::beg ios::cur ios::end Significado Búsqueda desde el principio del flujo. Búsqueda desde la posición actual en el flujo. Búsqueda desde el final del flujo. class ostream:virtual public ios Archivo de cabecera: Constructor/Destructor: #include <iostream.h> ostream (construye un objeto que se conecta a un objeto streambuf existente) ~ostream (destruye un objeto ostream) Funciones miembro: flush tellp put write seekp tellp ostream::tellp streampos tellp(); Obtiene el valor de la posición actual del flujo. write flush ostream::flush ostream & flush(); ostream& write(const signed char* buf, int n); ostream& write(const unsigned char*buf, int n); Inserta un número especificado (n) de bytes, desde un buffer en el flujo de salida asociado (buf). Limpia el buffer asociado con el flujo. ostream ostream::write ostream::ostream 1. ostream(streambuf *); 2. virtual ~ostream(); (1) construye un objeto de tipo ostream. (2) destruye un objeto ostream. G.13. CLASE OSTREAM_WITHASSIGN Esta clase es una subclase de ostream que permite asignación de objetos. Los objetos predefinidos cout, cerr y clog son objetos de esta clase, y 674 PROGRAMACIÓN EN C++. ALGORITMOS, ESTRUCTURAS Y OBJETOS por consiguiente, se pueden reasignar en tiempo de ejecución a un objeto ostream diferente. pcount ostrstream::pcount int pcount(); class ostream_withassign:public ostream Archivo de cabecera: #include <iostream.h> Constructor/Destructor: ostream_withassign (construye un objeto) ~ostream_withassign (destruye un objeto) Funciones miembro: Ninguno (aunque el operador = está sobrecargado) Devuelve el número de bytes actualmente almacenados en el buffer. Esta información es útil, especialmente cuando se almacenan datos binarios en el objeto. str ostream_withassign ostream_withassign::ostream_withassign ostream_withassign(); ~ostream::withassign(); char *str(); Devuelve y congela el buffer. En realidad, «congela» un array de entrada asignado dinámicamente y devuelve un puntero al mismo. Una vez que un array dinámico se congela, no se puede utilizar de nuevo para salida. Constructor y destructor por defecto. G.14. ostrstream::str G.15. CLASE OSTRSTREAM CLASE STREAMBUF Esta clase soporta flujos de salida que tienen arrays de caracteres como destino. Es una clase de manejo de buffers. Esta clase es abstracta, pero contiene las siguientes clases derivadas: filebuf, strstreambuf y conbuf. La clase streambuf proporciona un interfaz a dispositivos físicos. class ostrstream:public ostream class streambuf Archivo de cabecera: #include <strstrea.h> Constructor/Destructor: ostrstream (construye un objeto ostrstream) ostrstream (destruye un objeto ostrstream) Funciones miembro: pcount str Archivo de cabecera: #include <iostream.h> Constructor/Destructor: streambuf (constructores para uso en clases derivadas) ~streambuf (destructor virtual) Funciones miembro: allocate base ostrstream ostrstream::ostrstream 1. ostrstream(); 2. ostrstream(char *p, int long, int modo = ios::out); (1) construye un objeto dinámico ostrstream. (2) construye un objeto ostrstream con un buffer especificado de n-bytes, modo puede ser uno de los siguientes enumeradores: ios::out ios::ate ios::app Por defecto. El parámetro p se supone un array terminado en nulo. Igual que ate. blen ebuf epptr gptr out_waiting pbump sbumpc seekpos setbuf setp sgetn sputback sputn unbuffered eback egptr gbump in_avail pbase pptr seekoff setb setg sgetc snextc sputc stossc BIBLIOTECA DE CLASES ANSI/ISO C++ allocate streambuf::allocate protected:int allocate(); epptr streambuf::epptr protected: char *epptr(); Devuelve un puntero al byte después del último byte del área put. Establece un área de buffer. gbump base 675 streambuf::gbump streambuf::base protected: void gbump(int); protected:char *base(); Avanza el puntero get (incremento en número de bytes). Devuelve un puntero al primer byte del área de reserva (espacio entre los punteros devuelto por base y ebuf). gptr streambuf::gptr protected:char*gptr(); blen streambuf::blend Devuelve la siguiente posición en el área de get. protected:int blen(); in_avail Devuelve el tamaño en bytes del área de reserva. streambuf::in_avail int in_avail(); eback treambuf::eback Devuelve el número de caracteres que permanecen en el buffer de entrada. protected:char *eback(); out_waiting streambuf::out_waiting Devuelve el límite inferior del área get. int out_waiting(); Devuelve el número de caracteres que permanecen en el buffer de salida. ebuf streambuf::ebuf pbase protected:char* ebuf(); Devuelve un puntero al byte después del último byte del área de reserva. streambuf__pbase protected:char *pbase(); Devuelve un puntero al comienzo del área put. egptr streambuf::egptr protected::char* egptr(); Devuelve un puntero al byte después del último byte del área get. pbump protected:void pbump(int); Avanza el puntero put. streambuf::pbump 676 PROGRAMACIÓN EN C++. ALGORITMOS, ESTRUCTURAS Y OBJETOS pptr streambuf::pptr Devuelve un puntero al primer byte del área put. Establece los valores para los punteros del área get. streambuf::sbumpc setp Devuelve el carácter actual y a continuación avanza el puntero get. streambuf::seekoff virtual streampos seekoff(streamoff, ios::seek_dir, int modo = (ios::in|ios::out)); Mueve el puntero get o put. modo determina el tipo de operación (entrada/salida). Inicializa los punteros get. sgetc streambuf::sgetc int sgetc(); Devuelve el carácter en el puntero get. La función sgetc no mueve el puntero get. Devuelve EOF si no hay carácter disponible. sgetn seekpos streambuf::setp protected:void setp (char *, char *); int sbumpc(); seekoff streambuf::setg protected:void setg (char *, char *, char); protected:char *pptr(); sbumpc setg streambuf::sgetn streambuf::seekpos int sgetn(char *, int n); virtual streampos seekpos (streampos, int = (ios::in|ios::out)); Mueve el puntero get o put a una posición absoluta. setb streambuf::setb protected:void setb(char *, char *, int suprimir = 0); Establece el área de buffer. suprimir controla la supresión automática. setbuf Obtiene los siguientes n caracteres del buffer de entrada. snextc streambuf::snextc int snextc(); Primero comprueba el puntero get, después devuelve EOF si ya está al final del área get. streambuf::setbuf sputback streambuf::sputback virtual streambuf * setbuf(signed char *, int); streambuf* setbuf(unsigned char *, int); int sputback(char); Conecta el área de reserva especificada al objeto streambuf. Las clases derivadas pueden o no utilizar esta área. Devuelve un carácter a la entrada. Retrocede el puntero get una posición. BIBLIOTECA DE CLASES ANSI/ISO C++ sputc streambuf::sputc Almacena un carácter en el buffer de salida. sputn class strstreambase Archivo de cabecera: Constructor/Destructor: int sputc(int); Funciones miembro: streambuf::sputn int sputn(const char *, int n); #include <strstrea.h> strstreambase (construye un objeto) ~strstreambase (destruye un objeto) rdbuf rdbuf strstreambase::rdbuf strstreambuf *rdbuf(); Copia n caracteres en el buffer de salida. Devuelve el número de caracteres almacenados (n, aunque pueden ser menos si ocurre un error). Devuelve un puntero al strstreambuf asociado con ese objeto. strstreambase stossc strambuf::stossc void stossc(); Avanza al siguiente carácter en el buffer de entrada. streambuf strstreambase::strstreambase 1. protected:strstreambase(); 2. protected:strstreambase(char *, int, char *inicio); (1) crea un objeto vacío. (2) crea un objeto y le asocia un buffer especificado y una posición inicial. streambuf::streambuf G.17. 1. protected:streambuf(); 2. protected:streambuf(char *, int); 3. protected:virtual ~streambuf(); CLASE STRSTREAMBUF La clase strstreambuf es una clase derivada de streambuf que gestiona un array de caracteres en memoria. (1) crea un objeto de buffer vacío. (2) utiliza un array y tamaño dados como buffer, (3) el destructor limpia el buffer si el flujo se utiliza para salida. unbuffered streambuf::unbuffered 1. protected:void unbuffered(int); 2. protected: int unbuffered(); class strstreambuf:public streambuf Archivo de cabecera: Constructor/Destructor: Funciones miembro: (1) establece el estado a través de buffer. (2) devuelve un valor distinto de cero si no se realiza a través de buffer. #include <strstrea.h> stratreambuf (construye un objeto) ~strstreambuf (destruye un objeto) doallocate freeze overflow seekoff setbuf str underflow doallocate G.16. 677 CLASE STRSTREAMBASE Esta clase es totalmente protegida. Es clase base de strstream, istrstream y ostrstream. strstreambuf::doallocate virtual int doallocate(); Realiza asignación de bajo nivel a un buffer. 678 PROGRAMACIÓN EN C++. ALGORITMOS, ESTRUCTURAS Y OBJETOS freeze strstreambuf::freeze void freeze(int n = 1); La función freeze proporciona un medio de prevenir la supresión automáticamente. Para un parámetro distinto de cero, por defecto, se impide la entrada de nuevos caracteres en el buffer; un parámetro nulo proporciona una congelación de la situación. (1) construye un strstreambuf dinámico, la memoria se asignará dinámicamente a medida que se necesita. (2) construye un buffer dinámico. (3) construye un strstreambuf asignando inicialmente un buffer de al menos n bytes. (4) y (5) construye un strstreambuf estático con un buffer especificado. underflow strstreambase::underflow virtual int underflow(); overflow strstreambuf::overflow Hace una entrada disponible. Se llama cuando se solicita un carácter y el streambuf está vacío. virtual int overflow(int = EOF); Limpia un buffer. seekoff strstreambuf::seekoff virtual streampos seekoff(streamoff, ios::seek_dir, int); CLASE STRSTREAM Esta clase proporciona entrada y salida simultánea en un stratreambuf. Class strstream:public iostream, public strstreambase Mueve el puntero relativo a la posición actual. setbuf G.18. strstreambuf::setbuf Archivo de cabecera: Constructor/Destructor: Funciones miembro: virtual streambuf* setbuf(char *, int); #include <strstrea.h> strstream (construye un objeto) ~strstream (destruye un objeto) str Especifica el buffer que se ha de utilizar. str str strstreambuf::str char *str(); Devuelve un puntero al buffer y provoca una llamada a la función freeze. strstreambuf 1. 2. 3. 4. 5. strstreambuf::strstreambuf strstreambuf(); strstreambuf(void *(*) (long), void (*) (void *)); strstreambuf(int n); strstreambuf(signed char *, int, signed char *end “0); strstreambuf(unsigned char *, int, unsigned char *end”0); strstream::str char *str(); Devuelve y congela el buffer. El usuario debe desasignarlo si era dinámico. strstream strstream::strstream 1. strstream(); 2. strstream(char *, int n, int modo); (1) construye un objeto dinámico. (2) construye un objeto, asociándole un buffer estático de n bytes.