Lectura y suma de números de un archivo

C++C++Beginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderemos a leer números de un archivo y luego sumarlos línea por línea, escribiendo los resultados en otro archivo. Siguiendo los pasos de este tutorial, aprenderá a escribir un programa en C++ que:


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("C++")) -.-> cpp/ControlFlowGroup(["Control Flow"]) cpp(("C++")) -.-> cpp/IOandFileHandlingGroup(["I/O and File Handling"]) cpp(("C++")) -.-> cpp/StandardLibraryGroup(["Standard Library"]) cpp(("C++")) -.-> cpp/BasicsGroup(["Basics"]) cpp/BasicsGroup -.-> cpp/strings("Strings") cpp/ControlFlowGroup -.-> cpp/while_loop("While Loop") cpp/IOandFileHandlingGroup -.-> cpp/output("Output") cpp/IOandFileHandlingGroup -.-> cpp/user_input("User Input") cpp/IOandFileHandlingGroup -.-> cpp/files("Files") cpp/StandardLibraryGroup -.-> cpp/string_manipulation("String Manipulation") cpp/StandardLibraryGroup -.-> cpp/standard_containers("Standard Containers") subgraph Lab Skills cpp/strings -.-> lab-96163{{"Lectura y suma de números de un archivo"}} cpp/while_loop -.-> lab-96163{{"Lectura y suma de números de un archivo"}} cpp/output -.-> lab-96163{{"Lectura y suma de números de un archivo"}} cpp/user_input -.-> lab-96163{{"Lectura y suma de números de un archivo"}} cpp/files -.-> lab-96163{{"Lectura y suma de números de un archivo"}} cpp/string_manipulation -.-> lab-96163{{"Lectura y suma de números de un archivo"}} cpp/standard_containers -.-> lab-96163{{"Lectura y suma de números de un archivo"}} end

Crea un nuevo archivo de C++

Crea un nuevo archivo llamado file_sum.cpp en el directorio ~/project.

touch ~/project/file_sum.cpp

Incluye las bibliotecas necesarias

Para trabajar con archivos en C++, necesitamos incluir las bibliotecas <iostream> y <fstream> en nuestro programa. Agrega el siguiente código a tu archivo file_sum.cpp:

#include <iostream>
#include <fstream>

using namespace std;

Pide al usuario el nombre del archivo

Vamos a pedir al usuario el nombre del archivo. Agrega el siguiente código a tu archivo file_sum.cpp:

int main()
{
    char fileName[50];
    cout << "Enter file name: ";
    cin.getline(fileName, 50);
    ifstream inFile(fileName);
    ofstream outFile("sum.txt");
    string line;
}

Aquí declaramos un arreglo de caracteres fileName para almacenar el nombre del archivo que el usuario ingresará. Luego le pedimos al usuario que ingrese el nombre del archivo y lo almacenamos en el arreglo fileName. Finalmente, creamos un objeto ifstream para abrir el archivo de entrada inFile, y un objeto ofstream para crear el archivo de salida outFile. También declaramos la cadena line que se utilizará para almacenar cada línea del archivo de entrada.

Lee el archivo y suma los números

Ahora escribiremos el código para leer el archivo y sumar los números en cada línea. Para cada línea del archivo, leeremos los números utilizando un objeto stringstream, los sumaremos y escribiremos la suma en el archivo de salida. Agrega el siguiente código a tu archivo file_sum.cpp:

while (getline(inFile, line))
{
    int sum = 0;
    stringstream ss(line);
    int num;
    while (ss >> num)
    {
        sum += num;
    }
    outFile << sum << endl;
}

Aquí, usamos un bucle while para leer cada línea del archivo de entrada, almacenando la línea en la cadena line. Luego inicializamos la variable sum con 0, creamos un objeto stringstream llamado ss que contiene el contenido de cada línea. Luego extraemos cada número del stringstream a num e incrementamos la variable sum con cada número. Después de que todos los números de la línea hayan sido procesados, escribimos sum en el archivo de salida outFile.

Cierra los archivos y notifica al usuario

Por último, necesitamos cerrar los archivos de entrada y salida e informar al usuario de que el archivo ha sido procesado. Agrega el siguiente código a tu archivo file_sum.cpp:

inFile.close();
outFile.close();
cout << "File processed successfully." << endl;
return 0;

Compila y ejecuta el código

Compila el código file_sum.cpp usando el siguiente comando:

g++ file_sum.cpp -o file_sum

Ejecuta el código con el siguiente comando en la terminal:

./file_sum

Se te pedirá que ingreses el nombre del archivo que quieres procesar. Ingresa el nombre y pulsa Enter. El programa leerá el archivo, sumará los números línea por línea y escribirá los resultados en un nuevo archivo llamado sum.txt.

Código completo

Aquí está el código completo del archivo file_sum.cpp:

#include <iostream>
#include <fstream>
#include <sstream>

using namespace std;

int main()
{
    char fileName[50];
    cout << "Enter file name: ";
    cin.getline(fileName, 50);
    ifstream inFile(fileName);
    if (!inFile)
    {
        cerr << "Unable to open file" << endl;
        return -1;
    }
    ofstream outFile("sum.txt");
    string line;

    while (getline(inFile, line))
    {
        int sum = 0;
        stringstream ss(line);
        int num;
        while (ss >> num)
        {
            sum += num;
        }
        outFile << sum << endl;
    }

    inFile.close();
    outFile.close();
    cout << "File processed successfully." << endl;
    return 0;
}

Resumen

En este laboratorio, aprendimos cómo leer un archivo, sumar sus números línea por línea y escribir los resultados en otro archivo utilizando las bibliotecas estándar de C++ <iostream> y <fstream> y la clase stringstream. Ahora deberías ser capaz de manejar archivos y utilizar muchas de las operaciones básicas de archivos en tus programas de C++.