You are on page 1of 3

Manejo de archivos en C++ 1. STrames En C++, los archivos se manejan con un tipo particular de stream.

Un stream es una estructura de datos que se utiliza para manejar un ujo de caracteres y permitir poner o sacar de el tipos de datos estndar o clases denidas por el usuario. Por ejemplo, cout es un stream que nos permite escribir caracteres en la consola. Repasemos un poco el funcionamiento de cout y cin: #include <iostream> using namespace std; void main() { int n; cout << "Ingrese un numero entero" << endl; cin >> n; cout << "El numero que usted ingreso es el " << n << endl; } En este ejemplo podemos ver los dos operadores principales que se usan para trabajar con streams: << para streams de salida y >> para streams de entrada. Para recordar mejor el signicado de estos operadores, podemos pensar que << pone las cosas en el stream y que >> las saca. Ademas, podemos ver que ambos operadores saben convertir entre enteros y caracteres, en el sentido en que corresponda. Estos dos operadores se pueden denir para cualquier clase, pero nosotros no vamos a trabajar con entrada y salida redefindolos. cin es un ejemplo de un istream y cout es un ejemplo de un ostream. 1.2. Manipuladores Para cambiar el comportamiento de un stream, se pueden utilizar ciertas funciones especiales, llamadas manipuladores. Los manipuladores estn denidos en el archivo iomanip. Veamos algunos de los ms tiles. 1.2.1. endl Para marcar el nal de una lnea en un stream de salida, podemos usar el manipulador endl #include <iostream> #include <iomanip> using namespace std; void main() cout << "Hola!" << endl;

cout << "| este palito esta justo abajor de la H" << endl; } 1.2.2. skipws, noskipws Si estamos trabajando con un stream de entrada, y queremos que >> no ignore los espacios en blanco, el manipulador noskipws es justo lo que necesitamos Para deshacer el efecto de noskipws, simplemente utilizamos skipws. 1.2.3. boolalpha, noboolalpha A menudo utilizamos el stream de salida por consola para conocer el valor de las variables de nuestro programa en distintos momentos. Cuando pedimos mostrar una variable de tipo bool, obtenemos un 0 o un 1. Si queremos algo un poco ms signicativo, podemos utilizar el manipulador boolalpha. 2. Archivos En C++, los archivos se manejan mediante lestreams o fstreams. Estos son streams que adems proveen funciones para manipular archivos. Es decir, si nuestro programa escribe cosas en la consola, con los mismos comandos podemos escribir cosas en un archivo. Simplemente hay que cambiar cout por el nombre del stream que maneje nuestro archivo. 2.1. Entrada Para abrir un archivo para lectura, utilizamos un ifstream. Para eso, tenemos que denir una variable de ese tipo y vincularla a algn archivo. Para realizar esta vinculacin, tenemos dos mtodos: dar el nombre del archivo al declarar la variable o utilizar el mtodo open. Ambos producen el mismo resultado. Cuando los archivos ya no son necesarios, los cerramos utilizando el mtodo close. Una vez que cerramos el archivo, podemos usar el mismo ifstream para leer de otro archivo distinto, o del mismo archivo una vez ms. 2.2. Salida Para manejar un archivo de salida, utilizamos un ofstream 3. Enum enum es un mecanismo del lenguaje para denir constantes simblicas. Por ejemplo, si queremos representar los palos de una baraja francesa en C++, crear una clase puede ser demasiado, ya que solo tenemos que tratar con cuatro valores sencillos. Entonces, recurrimos al enum.

4. DJGPP El compilador que la ctedra utiliza no cumple en un 100 % con el estndar ANSI C++. En particular, no posee manipuladores. De todas formas, si brinda una forma de cambiar el comportamiento de un istream respecto a los espacios en blanco. Para hacer que estos no sean ignorados, debemos usar el mtodo unsetf de la siguiente forma cin.unsetf(ios::skipws); Si queremos volver a ignorar los espacios en blanco, hacemos cin.setf(ios::skipws);

You might also like