Введение
В этом практическом занятии мы научимся копировать содержимое одного файла в другой с использованием файловой обработки на языке C++.
Подключить заголовочные файлы и пространства имен
В первом шаге мы будем включать необходимые заголовочные файлы и пространства имен, чтобы приступить к написанию кода.
#include <iostream>
#include <fstream>
using namespace std;
Скопировать один файл в другой
В этом шаге мы выполним следующие действия:
- Создадим объекты классов
ifstreamиofstream. - Проверим, подключены ли они к своим соответствующим файлам. Если да, то продолжаем, иначе проверьте имена файлов дважды. Считайте содержимое исходного файла с использованием метода
getline()и запишите его в целевой файл с использованием оператора<<(то есть скопируйте каждую строку из объектаifstreamв объектofstream). - Закройте файлы после копирования с использованием метода
close().
void copyFile(string sourceFile, string destinationFile){
string line;
// creating ifstream and ofstream objects
ifstream sourceFileStream(sourceFile);
ofstream destinationFileStream(destinationFile);
// Reading from source file and writing to destination file
if(sourceFileStream.is_open() && destinationFileStream.is_open()){
while(getline(sourceFileStream, line)){
destinationFileStream << line << "\n";
}
cout<<"Copy Finished"<<endl;
}
else{
printf("Cannot read File");
}
//closing file
sourceFileStream.close();
destinationFileStream.close();
}
Главная функция
В этом шаге мы создадим главную функцию для выполнения операции копирования файла, вызвав нашу функцию copyFile().
int main(){
string sourceFile = "original.txt";
string destinationFile = "copy.txt";
copyFile(sourceFile, destinationFile);
return 0;
}
Компилировать и запускать
В этом шаге, так как файл с кодом сохранен в ~/project/main.cpp, мы можем изменить текущую директорию на ~/project и выполнить следующие команды в терминале:
g++ main.cpp -o main
./main
Это будет компилировать и выполнять программу и выводить результат:
Copy Finished
Конечный код
#include <iostream>
#include <fstream>
using namespace std;
void copyFile(string sourceFile, string destinationFile){
string line;
// creating ifstream and ofstream objects
ifstream sourceFileStream(sourceFile);
ofstream destinationFileStream(destinationFile);
// Reading from source file and writing to destination file
if(sourceFileStream.is_open() && destinationFileStream.is_open()){
while(getline(sourceFileStream, line)){
destinationFileStream << line << "\n";
}
cout<<"Copy Finished"<<endl;
}
else{
printf("Cannot read File");
}
//closing file
sourceFileStream.close();
destinationFileStream.close();
}
int main(){
string sourceFile = "original.txt";
string destinationFile = "copy.txt";
copyFile(sourceFile, destinationFile);
return 0;
}
Резюме
В этом лабораторном задании был создан приложение, которое позволяет пользователям копировать содержимое одного файла в другой с использованием методов обработки файлов на языке C++.



