No soy mucho de utilizar archivos pero cuando tengo que hacer algo tengo que investigar las funciones seek* y tell*. Este post tiene como objetivo que me aprenda esto, por favooor!!
seekg` y `tellg: Estas funciones se utilizan para manejar la posición del cursor de lectura en un flujo de entrada (`istream`).
seekg (seek get):
Cambia la posición del cursor de lectura en un flujo de entrada.
Su sintaxis es : stream.seekg(position); o stream.seekg(offset, direction);
Y los Parámetros:
- position: Especifica la nueva posición absoluta.
- offset: Desplazamiento en bytes desde el punto indicado por `direction`.
- direction: Puede ser `std::ios::beg` (inicio del archivo), `std::ios::cur` (posición actual), o `std::ios::end` (final del archivo).
Veamos un ejemplo:
std::ifstream file("example.txt");
file.seekg(10, std::ios::beg); // Mueve el cursor de lectura al décimo byte desde el inicio del archivo
tellg (tell get):
Retorna la posición actual del cursor de lectura en un flujo de entrada.
Su sintaxis es :stream.tellg();
Devuelve la posición actual como un valor de tipo std::streampos.
Veamos un ejemplo:
std::ifstream file("example.txt");
std::streampos pos = file.tellg(); // Obtiene la posición actual del cursor de lectura
seekp y tellp: Estas funciones se utilizan para manejar la posición del cursor de escritura en un flujo de salida (`ostream`).
seekp (seek put): Cambia la posición del cursor de escritura en un flujo de salida.
Su sintaxis es stream.seekp(position); o stream.seekp(offset, direction);
Los parámetros son:
- position: Especifica la nueva posición absoluta.
- offset: Desplazamiento en bytes desde el punto indicado por `direction`.
- direction: Puede ser `std::ios::beg` (inicio del archivo), `std::ios::cur` (posición actual), o `std::ios::end` (final del archivo).
Veamos un ejemplo:
std::ofstream file("example.txt");
file.seekp(5, std::ios::beg); // Mueve el cursor de escritura al quinto byte desde el inicio del archivo
tellp (tell put): Retorna la posición actual del cursor de escritura en un flujo de salida.
Su sintaxis: stream.tellp();
Devuelve la posición actual como un valor de tipo `std::streampos`.
Un ejemplo:
std::ofstream file("example.txt");
std::streampos pos = file.tellp(); // Obtiene la posición actual del cursor de escritura
Ambos pares de funciones permiten manipular y consultar la posición de los cursores dentro de los archivos o flujos, pero seekg/tellg están destinados a la lectura, mientras que seekp/tellp están destinados a la escritura. Vamos a ver si me lo aprendo.