Documentos de Académico
Documentos de Profesional
Documentos de Cultura
UNIDAD: 3.
GRADO: 1º.
GRUPO: “C”.
2
OBJETIVOS.
Objetivo general:
Objetivos específicos:
INTRODUCCIÓN.
Todos los programadores que llegan al C++ desde C están acostumbrados a utilizar las
puts, fwrite...). Esta biblioteca también está presente en C++, pero no parece ser la adecuada
El mecanismo de clases de C++ permite crear un sistema consistente y ampliable para los
mecanismos de entrada/salida. Este sistema se conoce como biblioteca de flujos . Estas clases
sirven como mecanismo para manejar los tipos básicos, pero, además, se puede modificar
Las funciones de entrada/salida no están definidas en el propio lenguaje C++, sino que están
operaciones E/S sin necesidad de conocer los conceptos típicos de orientación a objetos, tales
En la presente investigación se darán a conocer todos los conceptos básicos sobre las
Un flujo (stream) es una abstracción que se refiere a un flujo o corriente de datos que fluyen
el destino debe existir una conexión o tubería («pipe») por la que circulen los datos. Estas
El concepto de stream o flujo no es nuevo en C++. ANSI C utiliza este concepto para indicar
un tipo de puerto abstracto a través del cual datos no estructurados pueden caminar de forma
Por su parte C++ fue diseñado para el manejo de clases, así los flujos de C++ se encuentran
definidos mediante una jerarquía de clases completa que se distribuye con el compilador. Las
versiones antiguas3 de C++ se distribuían con una jerarquía de clases de streams que
actualmente es obsoleta. Las versiones C++ de AT&T desde la versión 2.0 utilizan la nueva
biblioteca iostream.
C++ da a los streams un significado más abstracto. Un programa C++ visualiza entrada o
salida como un flujo de datos. En la entrada un programa extrae bytes de un flujo de entrada,
y en la salida un programa inserta bytes en un flujo de salida. Así, un flujo se puede considerar
como una secuencia lineal de bytes con un significado. Los bytes pueden formar una
Los bytes de entrada pueden venir del teclado, pero también pueden proceder de otro
dispositivo de almacenamiento como un disco duro u otro programa. Y de forma análoga los
5
bytes del flujo de salida pueden ir destinados a la pantalla, a una impresora, a un fichero, o a
otro programa.
Este enfoque permite que un programa C++ trate la entrada de un teclado de igual forma que
se trata la entrada desde un fichero. El programa C++ examina simplemente el flujo de bytes,
sin necesidad de conocer cuál es la procedencia de los mismos. Esto mismo ocurre en la
salida, y ésta se podrá procesar de forma independiente del lugar a donde vayan destinados
los datos.
Esto quiere decir que los flujos necesitan para funcionar dos conexiones, una en cada
extremo.
En esencia, un flujo es una abstracción que se refiere a una interfaz común a diferentes
dispositivos de entrada y salida de una computadora. Existen dos formas de flujo: texto y
binario. Flujos de texto se utilizan con caracteres ASCII, mientras que los flujos binarios se
pueden utilizar con cualquier tipo de dato. Los sinónimos extraer u obtener se utilizan
Flujos de texto
Un flujo de texto es una secuencia de caracteres. En un flujo de texto, pueden ocurrir ciertas
conversiones de caracteres si son requeridas por el entorno del sistema. Por ejemplo, un
línea». Por esta razón, puede suceder que no se establezca una relación de uno a uno entre
los caracteres que se escriben o se leen y los que aparecen en el dispositivo externo. De igual
forma, como consecuencia de las posibles conversiones puede suceder que el número de
Flujos binarios
Un flujo binario es una secuencia de bytes que tiene una correspondencia uno a uno con los
cantidad de bytes escritos o leídos coincide con la del dispositivo externo. Sin embargo, se
Estos bytes nulos, se suelen utilizar, por ejemplo, para ajustar la información de tal forma
El archivo de cabecera declara tres clases para los flujos de entradas y salida estándar. La
clase istream es para entrada de datos desde un flujo de entrada, la clase ostream es para
salida de datos a un flujo de salida, y la clase iostream es para entrada de datos dentro de un
flujo. Por otra parte estas clases declaran también los cuatro objetos ya conocidos:
Las clases que se derivan de la clase base ios se utilizan para procesamiento de flujos de alto
nivel, mientras que las clases que se derivan de la clase base streambuf se utilizan para
clase es una subclase de las clases istream y ostream, que a su vez son clases derivadas
8
(subclases) de la clase base ios. Las tres clases que incluyen la palabra «fstream» en su
nombre se utilizan para tratamiento de archivos y las cuatro clases con la palabra «strstr» en
su nombre se utilizan para proceso de flujos de cadena en memoria. Por último, la clase
stdiobuf se utiliza para combinar E/S de flujos C++ con las funciones antiguas de E/S estilo
C.
LA BIBLIOTECA IOSTREAM.
de forma reiterada en todos los ejemplos que se han visto hasta el momento. El sistema de
entrada/salida en C++, está definido para trabajar con diferentes dispositivos (al igual que
flujo o stream. Los flujos forman el interfaz común entre el programa, el dispositivo y el
buffers. La estructura de los archivos puede variar con los distintos dispositivos, pero los
La biblioteca iostream es francamente potente, está formada por unas 250 funciones y por
aproximadamente 20 clases. Esta biblioteca está compuesta por varios archivos cabecera
clases tiene dos familias paralelas de clases: las derivadas de streambuf y las derivadas de
ios.
La clase streambuf
fundamentales para realizar operaciones con buffer y manejo de flujos cuando las
La jerarquía de clases ios gestiona todas las operaciones de E/S y proporciona el interfaz de
bajo nivel al programador. La clase ios contiene un puntero a streambuf. Para acceder a la
biblioteca iostream se deben incluir archivos de cabecera específicos; uno de ellos ya ha sido
La clase istream (input stream) proporciona las operaciones de lectura de datos, mientras que
la clase ostream (output stream) implementa las operaciones de escritura de datos. La clase
múltiple).
Las clases istrstream y ostrstream se utilizan cuando se desea manejar arrays de caracteres y
Las clases ios, istream, ostream y los objetos de flujos predeclarados (cin, cout, cerr y clog)
se definen en el archivo iostream, el cual debe, por consiguiente, ser incluido en el pro grama.
cabecera strstream contiene las definiciones de las clases istrstream y ostrstream y por último
Entradas/salidas en archivos
que el archivo se cree en modo binario o en modo texto. Si un objeto de ofstream está
ya declarado, se puede utilizar la función miembro open() para abrir el archivo. Por
otra parte, se dispone de la función miembro close(), que sirve para cerrar el archivo.
• fstream, clase derivada de iostream; permite leer y escribir en un archivo. Los objetos
el mismo archivo.
Clase istream
La clase istream permite definir un flujo de entrada y soporta métodos para entrada
formateada y no formateada. El operador de extracción >> está sobrecargado para todos los
tipos de datos integrales de C++, haciendo posible operaciones de entrada de alto nivel.
La función clear()
esta secuencia de teclas, se fija el valor de eofbit en el flujo de entrada. Pero a continuación,
La clase ostream
La clase ostream permite a un usuario definir un flujo de salida y soporta métodos para salidas
se derivan todas de ostream. Al igual que istream, la clase ostream se deriva virtualmente de
La entrada y salida en C++ se realiza mediante los operadores de inserción << y de extracción
>>. Una característica muy importante del sistema de entrada/salida de C++ es que estos
operadores se pueden sobrecargar de forma que se puedan insertar y extraer cualquier tipo
de objetos en el flujo.
El operador <<
izquierda.
Cuando el operador << se aplica a un objeto ostream y una expresión objeto_ostream <<
ese valor en el objeto ostream. Por consiguiente, en el caso de: const double PI = 3.1416;
cout << PI; la función << convierte el valor double, 3.1416, en los caracteres
El operador de inserción está sobrecargado para reconocer todos los tipos básicos de C++:
13
La lista no incluye al tipo char, ya que este tipo es sinónimo de unsigned char o de signed
Las clases definen datos y funciones miembro. Una función de una clase se llama un método
o función miembro. La clase ostream proporciona la función put() para insertar un único
carácter en el flujo de salida y la función write(), para insertar una cadena en el flujo de salida.
Se puede escribir en un flujo de salida llamando a las funciones miembro put() o write().
dispositivo.put(valor_caracter);
dispositivo.write(valor_cadena, num);
valor_caracter puede ser una constante, expresión o variable carácter (char) y valor_cadena
una cadena; num es un valor int utilizado para especificar el número de caracteres de la
inserción <<. Su misión es leer datos de un flujo de entrada, generalmente cin. Un sencillo
char t;
cin >> t;
14
El símbolo >> señala la dirección del flujo, y lee los caracteres hasta que encuentra uno que
no es parte del tipo requerido (habitualmente espacios, tabuladores o retorno de carro). Este
int a, b, c, d, e;
float n;
• La función operator >> devuelve una referencia a un objeto istream, así que el
• El operador >> está sobrecargado con lo cual se puede utilizar con todos los tipos
básicos.
• Se debe sobrecargar el operador >> para que pueda actuar sobre los tipos definidos
por el usuario.
Función get
La función miembro get() lee un único carácter o una línea de datos del teclado (cadenas).
La función miembro get() tiene varios formatos y está definida en la clase istream. Desde un
punto de vista práctico, get()se puede utilizar de dos modos: get(), se utiliza sin parámetros
en cuyo caso el valor devuelto se puede utilizar con una referencia a un carácter; otro formato
La clase istream contiene la función miembro get para la introducción de cadenas completas
simplemente acepta una cadena de caracteres, y los sitúa en la variable adecuada. Realmente
Función getline
La función getline() permite a cin leer cadenas completas, incluyendo espacios en blanco; es
muy similar a la función miembro get() de dos o tres argumentos, excepto que el carácter de
Esta función miembro de istream opera de forma análoga a la función get, siendo su
prototipo:
Su diferencia con la función miembro get es que el carácter de terminación se lee antes de
que se añada el carácter '\0'. En consecuencia esta función elimina el carácter de terminación
Función ignore
Su cometido es saltarse n caracteres del stream de entrada, o hasta que encuentre el carácter
Lee e ignora los siguientes 25 caracteres o hasta que se produzca el primer salto de línea.
Función read
Esta función lee un número dado de bytes, almacenándolos en la posición especificada. Sus
prototipos son:
Al contrario que get y getline, read no añade ningún carácter a la entrada, por lo que no
convierte la entrada a formato cadena. El uso más típico de esta función es con archivos
binarios.
Función putback
Esta función inserta un carácter de nuevo en la cadena de entrada. Dicho carácter se convierte
Función peek
Esta función devuelve el siguiente carácter de la entrada sin ser extraído de la cadena de
int peek();
17
Existe un segundo método para establecer los indicadores de flujo: llamar a las funciones
miembro setf() y unsetf(). Estas funciones son similares a los manipuladores setiosflags() y
cout.setf(ios::scientific);
cout.unsetf(ios::scientific);
MANIPULADORES
Hasta ahora se han visto varias formas de manejo del formato, bastante potentes, pero un
poco engorrosas de emplear. C++ ofrece un enfoque más amigable con lo que se denominan
manipuladores. Los manipuladores son funciones especiales que se pueden emplear con los
CONCLUSIÓN.
Se cumplió con los objetivos propuestos, se tiene un mayor entendimiento y comprensión del
Un flujo (stream) es una abstracción que se refiere a un flujo o corriente de datos que fluyen
flujo es una abstracción que se refiere a una interfaz común a diferentes dispositivos de
entrada y salida de una computadora. Existen dos formas de flujo: texto y binario.
Las operaciones de entrada y salida no forman parte del conjunto de sentencias de C++, sino
incluyen en los archivos de cabecera iostream.h por lo que siempre que queramos utilizarlas
Las características típicas de E/S son: Cuatro objetos de flujos se crean en cada programa:
cout, cin, cerr y clog. La salida a pantalla utiliza el identificador de flujo cout y el operador
de inserción, cout << valor;. La entrada del teclado se realiza mediante el identificador de
flujo cin y el operador de inserción >>. cin >> variable;. La función miembro get() se utiliza
para leer caracteres individuales desde el teclado y se puede utilizar put() para sacar
caracteres. Cuando se necesita leer una línea completa de entrada, se debe utilizar la función
entrada o salida.
19
REFERENCIAS.
Educación.