Копирование содержимого файлов на C++

C++C++Beginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии мы научимся копировать содержимое одного файла в другой с использованием файловой обработки на языке C++.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("C++")) -.-> cpp/IOandFileHandlingGroup(["I/O and File Handling"]) cpp(("C++")) -.-> cpp/SyntaxandStyleGroup(["Syntax and Style"]) cpp(("C++")) -.-> cpp/BasicsGroup(["Basics"]) cpp(("C++")) -.-> cpp/FunctionsGroup(["Functions"]) cpp(("C++")) -.-> cpp/OOPGroup(["OOP"]) cpp/BasicsGroup -.-> cpp/strings("Strings") cpp/FunctionsGroup -.-> cpp/function_parameters("Function Parameters") cpp/OOPGroup -.-> cpp/classes_objects("Classes/Objects") cpp/IOandFileHandlingGroup -.-> cpp/output("Output") cpp/IOandFileHandlingGroup -.-> cpp/files("Files") cpp/SyntaxandStyleGroup -.-> cpp/code_formatting("Code Formatting") subgraph Lab Skills cpp/strings -.-> lab-96158{{"Копирование содержимого файлов на C++"}} cpp/function_parameters -.-> lab-96158{{"Копирование содержимого файлов на C++"}} cpp/classes_objects -.-> lab-96158{{"Копирование содержимого файлов на C++"}} cpp/output -.-> lab-96158{{"Копирование содержимого файлов на C++"}} cpp/files -.-> lab-96158{{"Копирование содержимого файлов на C++"}} cpp/code_formatting -.-> lab-96158{{"Копирование содержимого файлов на C++"}} end

Включение заголовочных файлов и пространств имен

В первом шаге мы будем включать необходимые заголовочные файлы и пространства имен, чтобы приступить к написанию кода.

#include <iostream>
#include <fstream>

using namespace std;

Копирование одного файла в другой

В этом шаге мы выполним следующие действия:

  1. Создадим объекты классов ifstream и ofstream.
  2. Проверим, подключены ли они к своим соответствующим файлам. Если да, то продолжаем, иначе проверьте имена файлов дважды. Считайте содержимое исходного файла с использованием метода getline() и запишите его в целевой файл с использованием оператора << (то есть скопируйте каждую строку из объекта ifstream в объект ofstream).
  3. Закройте файлы после копирования с использованием метода 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++.