Programación en C++ con Ficheros: Lectura, Escritura y Manejo de Bytes

Informática y Telecomunicaciones3,96 KB

// 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;
}

Descargar

PDF Word HTML