Programación en C++ con Ficheros: Lectura, Escritura y Manejo de Bytes
// Pedir números y crear fichero numeros.txt, separados por espacios en blanco
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int numero;
ofstream fichero("numeros.txt");
cout << "Dime un número: ";
cin >> numero;
while (numero != 0)
{
fichero << numero << " ";
cout << "Dime otro número: ";
cin >> numero;
}
fichero.close();
cout << "Fichero creado" << endl;
return 0;
}
Nota: en el original faltaba la escritura de los números en el fichero, la comparación en el if usaba el operador de asignación = en lugar de ==, y el close() estaba dentro de un if sin llaves. Se han corregido estos errores.
Mostrar información de un fichero por páginas de 24 líneas
// Información de fichero cada 24 líneas, haciendo pausa.
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
string nombre;
string linea;
string pausa;
int numeroLinea = 0;
cout << "Dime el nombre del fichero: ";
getline(cin, nombre);
ifstream fichero(nombre.c_str());
while (!fichero.eof())
{
getline(fichero, linea);
if (!fichero.eof())
cout << linea << endl;
numeroLinea++;
if (numeroLinea % 24 == 23)
{
cout << "Pulsa Intro para seguir... ";
getline(cin, pausa);
}
}
fichero.close();
return 0;
}
Suma de los números del fichero numeros.txt
// Suma de los números del fichero "numeros.txt"
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int n;
int suma = 0;
ifstream fichero("numeros.txt");
while (!fichero.eof())
{
fichero >> n;
suma += n;
}
cout << "Suma de los datos: " << suma << endl;
fichero.close();
return 0;
}
Último byte de un fichero
// Último byte de un fichero cuyo nombre indique el usuario
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
string nombre;
cout << "Último byte de un fichero: " << endl;
cout << "Dime el nombre del fichero: ";
getline(cin, nombre);
ifstream fichero(nombre.c_str(), ifstream::binary);
if (fichero.fail())
cout << "No encontrado" << endl;
else
{
fichero.seekg(-1, fichero.end); // Nos colocamos al final
int dato = fichero.get(); // Y leemos
cout << "El último byte es: " << dato << endl;
}
fichero.close();
return 0;
}
Mostrar el último byte y contar cuántas veces aparece en el fichero
// Buscar un byte en un fichero e indicar cuántas veces aparece
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
string nombre;
int dato;
int cantidad = 0;
cout << "Buscar un byte en un fichero: " << endl;
cout << "Dime el nombre del fichero: ";
getline(cin, nombre);
cout << "Dime el dato a buscar: ";
cin >> dato;
ifstream fichero(nombre.c_str(), ifstream::binary);
if (fichero.fail())
cout << "No encontrado" << endl;
else
{
while (!fichero.eof())
{
int datoActual = fichero.get();
if (datoActual == dato)
cantidad++;
}
fichero.close();
}
cout << "Encontrado " << cantidad << " veces" << endl;
return 0;
}