Введение
В этом практическом занятии мы научимся считывать числа из файла, а затем суммировать их построчно, выводя результаты в другой файл. Следуя шагам этого руководства, вы научитесь писать программу на C++, которая:
Создайте новый файл на C++
Создайте новый файл с именем file_sum.cpp в каталоге ~/project.
touch ~/project/file_sum.cpp
Подключите необходимые библиотеки
Для работы с файлами в C++ нам нужно подключить библиотеки <iostream> и <fstream> в нашей программе. Добавьте следующий код в файл file_sum.cpp:
#include <iostream>
#include <fstream>
using namespace std;
Запросите у пользователя имя файла
Мы попросим пользователя ввести имя файла. Добавьте следующий код в файл 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;
}
Здесь мы объявляем массив fileName типа char, чтобы хранить имя файла, которое введет пользователь. Затем мы просим пользователя ввести имя файла и сохраняем его в массив fileName. Наконец, мы создаем объект ifstream для открытия входного файла inFile и объект ofstream для создания выходного файла outFile. Также мы объявляем строку line, которая будет использоваться для хранения каждой строки входного файла.
Прочитайте файл и просуммируйте числа
Теперь мы напишем код для чтения файла и суммирования чисел в каждой строке. Для каждой строки в файле мы будем читать числа с использованием объекта stringstream, суммировать их и записывать сумму в выходной файл. Добавьте следующий код в файл file_sum.cpp:
while (getline(inFile, line))
{
int sum = 0;
stringstream ss(line);
int num;
while (ss >> num)
{
sum += num;
}
outFile << sum << endl;
}
Здесь мы используем цикл while для чтения каждой строки входного файла, сохраняя строку в строковой переменной line. Затем мы инициализируем переменную sum значением 0, создаем объект stringstream под названием ss, который хранит содержимое каждой строки. Затем мы извлекаем каждое число из stringstream в переменную num и увеличиваем переменную sum на каждое число. После обработки всех чисел в строке мы записываем sum в выходной файл outFile.
Закройте файлы и уведомите пользователя
Наконец, нам нужно закрыть входной и выходной файлы и сообщить пользователю, что файл был обработан. Добавьте следующий код в файл file_sum.cpp:
inFile.close();
outFile.close();
cout << "File processed successfully." << endl;
return 0;
Компилируйте и запустите код
Скомпилируйте код из файла file_sum.cpp с использованием следующей команды:
g++ file_sum.cpp -o file_sum
Запустите код с использованием следующей команды в терминале:
./file_sum
Вам будет предложено ввести имя файла, который вы хотите обработать. Введите имя и нажмите Enter. Программа прочитает файл, просуммирует числа по строкам и запишет результаты в новый файл с именем sum.txt.
Полный код
Вот полный код файла 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;
}
Резюме
В этом практическом занятии мы узнали, как читать файл, суммировать его числа по строкам и записывать результаты в другой файл с использованием стандартных библиотек C++ <iostream> и <fstream> и класса stringstream. Теперь вы должны быть в состоянии обрабатывать файлы и использовать многие из основных операций с файлами в своих программах на C++.



