Académique Documents
Professionnel Documents
Culture Documents
Uno de los conceptos básicos de C++ es el de stream o flujo, el cual puede definirse como un dispositivo
que produce o consume información. Un flujo está ligado a un dispositivo físico (memoria, disco, monitor,
etc.).
Cada vez que se ejecuta un programa C++ se abren automáticamente tres flujos:
C++ dispone de dos jerarquías de clases para las operaciones de entrada/salida: una de bajo nivel,
streambuf, que es utilizada por programadores expertos, y otra de alto nivel con las clases: istream,
ostream e iostream, que derivan de la clase ios. En estas clases se disponen de variables y métodos
para controlar los flujos de entrada y de salida. Ver la figura siguiente:
Manipuladores de entrada/salida
Las funciones width(), precision(), y fill(), están declaradas en ios y definidas en las clases istream,
ostream e iostream.
La función miembro width() establece el ancho de salida de un dato. Cuando es necesario el sistema la
aumenta de modo automático.
La función miembro precision() establece el número de cifras para un dato de salida. Cuando no se indica
la precisión por default es 6 dígitos.
La función miembro fill() establece el carácter de relleno para un dato de salida. Por default el caracter de
relleno es un blanco ‘ ‘.
ios
istream ostream
iostream
Página 1 de 10
Los manipuladores pueden tener argumentos o no tenerlos. Los manipuladores sin argumentos (endl,
flush, etc.) están definidos en <iostream>. Los que tienen argumentos están definidos en <iomanip>.
Un manipulador solo afecta al flujo (cin, cout, etc.) al que se aplica. Ver la tabla 1.
Entrada/Salida de archivos
Para almacenar y recuperar datos de un archivo creado en C++ se requieren tres elementos:
Un archivo
Un objeto en el flujo de archivos
Un modo
Un Archivo es un conjunto de datos relacionados que se guardan físicamente bajo un nombre único
(nombre externo) en un dispositivo de memoria secundaria como discos, cintas CD ROM y similares. Al
respecto vea la Figura 2.
int main( )
{
Un Objeto del flujo de archivos permite trabajar con el archivo externo. C++ permite trabajar con objetos de
las clases ifstream y ofstream. Un objeto ifstream implica a los procedimientos de entrada de datos;
mientras que un objeto de la clase ofstream implica a los procedimientos de salida de datos. Los objetos
de flujo de archivo son el nombre interno del objeto archivo. Los objetos de estas clases se declaran como
sigue,
Las clases ifstream y ofstream son derivadas de la clase fstream. Los objetos de flujo de archivo tienen
acceso a funciones predeterminadas o métodos definidos en sus respectivas clases. Así; se tienen open( )
para abrir archivo, fail( ) averiguar si se realizó con éxito la conexión al archivo y close( ) para cerrar el
archivo entre otras que vera más adelante. Todas estas funciones conectan el nombre externo del archivo
con el nombre interno del archivo. Al respecto pruebe los siguientes programas
Página 2 de 10
Ejemplo 1
// Almacenar en el archivo
escribe << "Codigo: " << codigo << endl;
escribe << "Curso: " << Curso << endl;
escribe << "Examen Parcial: " << ep << endl;
escribe << "Examen Final: " << ef << endl;
escribe << "Practicas: ";
for (i = 0; i< 4; i++)
escribe << prac[i] << " ";
escribe << endl;
Página 3 de 10
Ejemplo 2
Página 4 de 10
Objetos fstream
Cuando se utiliza la función miembro de la clase fstream, como por ejemplo la función fopen() se requiere
de dos argumentos; uno el nombre externo del archivo y otro el indicador de modo para la apertura. Al
respecto vea la tabla 2.
archivo_out<<setiosflags(ios::fixed)
<<setiosflags(ios::showpoint)
<<setprecision(2);
dará formato a todos los datos insertados en el flujo archivo_out de la misma forma que lo harían esos
manipuladores en cout. Al respecto se tienen
ios::fixed; ocasiona que el flujo extraiga todos los datos numéricos en notación convencional de punto
fijo(sin exponente).
ios::showpoint; indica al flujo que siempre debe insertarse un punto decimal.
setprecision(2); indica que siempre deben mostrarse dos valores decimales después del punto decimal.
Ejemplo 3
Página 5 de 10
Ejecución del programa
Página 6 de 10
Ejemplo 4: El siguiente programa abre el archivo del ejemplo anterior ymuestra su contenido en pantalla.
Ejemplo 5: Programa que genera un nuevo archivo de texto,pero esta vez sin encabezado.
Página 7 de 10
El contenido de TablaTrigo2.txt es el siguiente:
Ejemplo 6:
Teniendo el archivo “TablaTrigo2.txt”, el siguiente programa abre dicho archivo para lectura y con esta
información escribe en un nuevo archivo “TablaTrigo3.txt”, los datos del archivo anterior pero añadiendo
una nueva columna de datos que es el valor de la tangente de cada ángulo.
Página 8 de 10
Contenido del nuevo archivo “TablaTrigo3.txt”
Página 9 de 10
EJERCICIOS
1. Escriba un programa tal que guarde en cada línea del archivo “Notas.txt”, el código, primer apellido,
segundo apellido y las cuatro notas de N alumnos.
2. Escriba un programa que abra el archivo anterior “Notas.txt” y guarde en cada línea del archivo texto
“Acta.txt”, el código, primer apellido, segundo apellido y el promedio del alumno. Las cuatro notas de un
alumno representan examen parcial, examen final, promedio de prácticas y promedio de laboratorio. La
fórmula para calcular el promedio es PF = 0.25EP+0.35EF+0.2PP+0.2PL.
3. Se tiene un archivo de texto llamado marcas1.txt que contiene en cada una de sus líneas la marca de
un auto. Escribir un programa que permita crear otro archivo de texto llamado marcas2.txt de tal forma
que su contenido sea el mismo que el de marcas1.txt pero en orden contrario. En la solución evite el
uso de arreglos de cadenas.
Por ejemplo:
Archivo marcas1.txt Archivo marcas2.txt
Toyota Mitsubishi
Volkswagen BMW
Hyundai Honda
Ford Ford
Honda Hyundai
BMW Volkswagen
Mitsubishi Toyota
4. Respecto al problema 6, escriba un programa que permita crear el archive marcas3.txt, el cual contiene
las marcas del archivo marcas1.txt, pero ordenadas ascendentemente.
5. Se tiene en el archivo texto datosTrab.txt los datos de para la planilla mensual de los trabajadores de la
empresa “Construyendo SAC”. En cada línea del archivo se tiene: código, apellido paterno, apellido
materno, nombre, horas trabajadas y tarifa por hora.
Escribir un programa tal que entre otras funciones tenga las siguientes
a) Función que recibe el archivo de datos y crea un nuevo archivo donde se guardan en cada línea:
código, horas trabajadas, pago antes de descuento y pago después de descuentos; de cada
trabajador. Para el pago se considera un descuento del 8% para la Seguridad Social y 10% para la
AFP.
b) Función que recibe el archivo de datos y procede a crear un nuevo archivo donde se guardan en cada
línea el código y el pago antes de descuentos ordenados de mayor a menor.
6. Escriba un programa que abra un archivo tipo texto; luego lo analice y en otro archivo imprima un
reporte, donde se guarden las estadísticas del primer archivo según lo siguiente:
Caracteres: xx
Alfabeticos: xx
Mayúsculas: xx
Minúsculas: xx
Consonantes: xx
Blancos: xx
Digitos: xx
Vocales: xx
De puntuación: xx
Cinco letras más usadas: ABCDE
Donde XX indica la cantidad de dichos caracteres y ABCDE las cinco letras más usadas en el archivo
analizado.
Referencias
1. Deitel H.M. y Deitel P.J. (2009). "C++ Cómo Programar". México. Prentice-Hall Hispanoamericana., 1320 p.
nd
2. Eckel, Bruce (2000) “Thinking In C++” U.S.A. 2 . Edition Volume 1. MindView Inc.
3. Joyanes Aguilar Luis (2000). “Programación en C++ Algoritmos, estructuras de datos y objetos” Madrid.
McGraw Hill/Interamericana de España S.A. 710p.
4. Ruiz Lizama, Edgar (2009). "Programación con C++" Lima, Fondo editorial UNMSM 434p.
5. Schildt Herbert (1996). “C++ Para Programadores” Madrid. McGraw Hill/Interamericana de España S.A. 398p.
6. Soustrup, Bjarne (2002). "El Lenguaje de Programación C++ Edición especial". España. Addison Wesley –
PEARSON EDUCACION S.A. 1050 p.
Página 10 de 10