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:
💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí
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:
Crea un nuevo archivo llamado file_sum.cpp
en el directorio ~/project
.
touch ~/project/file_sum.cpp
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;
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.
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
.
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 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
.
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;
}
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++.