Manejo de ficheros
Libreria fstream
La librería fstream en C++ proporciona una interfaz para manejar archivos de forma flexible y eficiente. Se incluye de la sigueinte manera:
Permite la lectura y escritura de datos en archivos, lo que resulta útil para realizar operaciones de entrada y salida en aplicaciones. En este artículo, exploraremos las principales características y funcionalidades de la librería fstream.
Abriendo y cerrando archivos
La librería fstream ofrece diversas funciones para abrir y cerrar archivos. Al abrir un archivo, se puede especificar el modo de apertura, que puede ser de lectura, escritura o ambas.
Para evitar tener que utilizar open existen dos tipos de datos predefinidios std::ifstream
y std::ofstream
que abren el fichero en modo de lectura o escirtura.
Tambien es posible pasarles el modo apertura a sus constructores, aunque no es tan comun:
Open
Open()
permite abrir archivos con diferentes modos de apertura y realizar operaciones de lectura y escritura en ellos.
El método open()
toma como primer parámetro el nombre del archivo que se va a abrir, especificado como una cadena de caracteres (const char*
). El segundo parámetro, mode
, es opcional y permite especificar el modo de apertura del archivo. Por defecto, se asume que el archivo se abrirá en modo de lectura y escritura.
Modos de apertura
Aquí tienes algunos de los modos de apertura más comunes que se utilizan al abrir un archivo con ofstream
en C++:
std::ios::out
: Abre el archivo en modo de escritura. Si el archivo no existe, se crea. Si el archivo ya existe, se sobrescribe su contenido.std::ios::app
: Abre el archivo en modo de escritura al final. Si el archivo no existe, se crea. Los datos nuevos se agregarán al final del archivo existente sin eliminar el contenido previo.std::ios::trunc
: Abre el archivo en modo de escritura y trunca su contenido existente. Si el archivo no existe, se crea. Si el archivo ya existe, se eliminará su contenido anterior antes de comenzar a escribir nuevos datos.std::ios::binary
: Abre el archivo en modo binario en lugar de modo de texto. Esto permite escribir y leer datos binarios, como imágenes o estructuras de datos personalizadas.std::ios::in
: Abre el archivo en modo de lectura. Permite leer datos del archivo. Si el archivo no existe, se producirá un error al intentar abrirlo.
Comprobar apertura
Después de abrir un archivo, es importante comprobar si el archivo se abrió correctamente. Esto se puede hacer utilizando el siguiente enfoque:
La función is_open()
devuelve true
si el archivo se abrió correctamente y false
en caso contrario. Si el archivo no se abrió correctamente, se puede manejar el error de acuerdo con los requisitos de la aplicación.
Metodos de Lectura
Método: get()
get()
El método get()
se utiliza para leer un solo carácter del archivo. Retorna el carácter leído como un objeto de tipo int
o EOF
(End-Of-File) en caso de alcanzar el final del archivo.
Método: getline()
getline()
El método getline()
se utiliza para leer una línea completa del archivo y almacenarla en un objeto de tipo std::string
. Permite especificar un delimitador opcional para determinar el final de la línea.
Permite especificar un delimitador opcional para determinar el final de la lectura.
Método: read()
read()
El método read()
se utiliza para leer una cantidad específica de caracteres desde el archivo y almacenarlos en un búfer. Puedes especificar la cantidad de caracteres a leer y la ubicación de almacenamiento mediante un puntero.
Método: operator>>
operator>>
El operador de extracción >>
se utiliza para leer datos numéricos desde un archivo. Puede ser utilizado con diferentes tipos de datos, como int
, float
, double
, entre otros. Los datos leídos son asignados directamente a las variables proporcionadas.
Metodos de escritura
Manipulación de la posición de lectura/escritura
Cuando trabajas con archivos utilizando la clase std::fstream
en C++, puedes manipular la posición de lectura y escritura en el archivo. Esto te permite desplazarte dentro del archivo para leer o escribir datos en ubicaciones específicas.
seekg() - Establecer la posición de lectura
El método seekg()
se utiliza para establecer la posición de lectura en el archivo. Puedes especificar la posición a la que deseas desplazarte utilizando un desplazamiento relativo o absoluto. Aquí tienes un ejemplo:
En el ejemplo anterior, seekg()
se utiliza para establecer la posición de lectura en diferentes ubicaciones del archivo. El primer argumento especifica el desplazamiento, mientras que el segundo argumento (opcional) indica desde dónde se realiza el desplazamiento (principio, posición actual o final del archivo).
tellg() - Obtener la posición de lectura actual
El método tellg()
se utiliza para obtener la posición de lectura actual en el archivo. Devuelve un valor que representa la posición en bytes desde el principio del archivo. Aquí tienes un ejemplo:
En el ejemplo anterior, tellg()
se utiliza para obtener la posición de lectura actual en el archivo. Luego, se puede convertir la posición a un valor entero si es necesario.
seekp() - Establecer la posición de escritura
El método seekp()
se utiliza para establecer la posición de escritura en el archivo. Funciona de manera similar a seekg()
, pero se aplica a la posición de escritura en lugar de la posición de lectura. Aquí tienes un ejemplo:
En el ejemplo anterior, seekp()
se utiliza para establecer la posición de escritura en diferentes ubicaciones del archivo.
tellp() - Obtener la posición de escritura actual
El método tellp()
se utiliza para obtener la posición de escritura actual en el archivo. Funciona de manera similar a tellg()
, pero se aplica a la posición de escritura en lugar de la posición de lectura. Aquí tienes un ejemplo:
En el ejemplo anterior, tellp()
se utiliza para obtener la posición de escritura actual en el archivo. Luego, se puede convertir la posición a un valor entero si es necesario.
Moverse a destiempo
Por defecto, el puntero de lectura (get pointer
) y el puntero de escritura (put pointer
) se encuentran en la misma posición al abrir un archivo en modo de lectura/escritura (std::ios::in | std::ios::out
). Esto significa que, al realizar operaciones de lectura o escritura, ambas posiciones se actualizan automáticamente.
Sin embargo, puedes manipular los punteros de forma independiente utilizando los métodos seekg()
y seekp()
para establecer la posición de lectura y escritura respectivamente.
Last updated