Introdução
Neste laboratório, aprenderemos como ler números de um arquivo e, em seguida, somá-los linha por linha, enviando os resultados para outro arquivo. Ao seguir os passos deste tutorial, você aprenderá a escrever um programa C++ que:
Neste laboratório, aprenderemos como ler números de um arquivo e, em seguida, somá-los linha por linha, enviando os resultados para outro arquivo. Ao seguir os passos deste tutorial, você aprenderá a escrever um programa C++ que:
Crie um novo arquivo chamado file_sum.cpp no diretório ~/project.
touch ~/project/file_sum.cpp
Para trabalhar com arquivos em C++, precisamos incluir as bibliotecas <iostream> e <fstream> em nosso programa. Adicione o seguinte código ao seu arquivo file_sum.cpp:
#include <iostream>
#include <fstream>
using namespace std;
Vamos solicitar ao usuário o nome do arquivo. Adicione o seguinte código ao seu arquivo 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;
}
Aqui, declaramos um array de caracteres fileName para armazenar o nome do arquivo que o usuário irá inserir. Em seguida, solicitamos ao usuário que insira o nome do arquivo e o armazenamos no array fileName. Finalmente, criamos um objeto ifstream para abrir o arquivo de entrada inFile e um objeto ofstream para criar o arquivo de saída outFile. Também declaramos a string line, que será usada para armazenar cada linha do arquivo de entrada.
Agora, vamos escrever o código para ler o arquivo e somar os números em cada linha. Para cada linha no arquivo, leremos os números usando um objeto stringstream, somaremos e escreveremos a soma no arquivo de saída. Adicione o seguinte código ao seu arquivo file_sum.cpp:
while (getline(inFile, line))
{
int sum = 0;
stringstream ss(line);
int num;
while (ss >> num)
{
sum += num;
}
outFile << sum << endl;
}
Aqui, usamos um loop while para ler cada linha do arquivo de entrada, armazenando a linha na string line. Em seguida, inicializamos a variável sum com 0, criamos um objeto stringstream chamado ss que contém o conteúdo de cada linha. Depois, extraímos cada número do stringstream para num e incrementamos a variável sum com cada número. Após todos os números na linha terem sido processados, escrevemos sum no arquivo de saída outFile.
Por fim, precisamos fechar os arquivos de entrada e saída e informar ao usuário que o arquivo foi processado. Adicione o seguinte código ao seu arquivo file_sum.cpp:
inFile.close();
outFile.close();
cout << "File processed successfully." << endl;
return 0;
Compile o código file_sum.cpp usando o seguinte comando:
g++ file_sum.cpp -o file_sum
Execute o código com o seguinte comando no terminal:
./file_sum
Você será solicitado a inserir o nome do arquivo que deseja processar. Insira o nome e pressione Enter. O programa lerá o arquivo, somará os números linha por linha e escreverá os resultados em um novo arquivo chamado sum.txt.
Aqui está o código completo do arquivo 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;
}
Neste laboratório, aprendemos como ler um arquivo, somar seus números linha por linha e escrever os resultados em outro arquivo usando as bibliotecas padrão C++ <iostream> e <fstream> e a classe stringstream. Agora você deve ser capaz de lidar com arquivos e usar muitas das operações básicas de arquivo em seus programas C++.