Copiar Contenido de Archivos en C++

C++C++Beginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderemos cómo copiar el contenido de un archivo a otro utilizando la manipulación de archivos en el lenguaje C++.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("C++")) -.-> cpp/FunctionsGroup(["Functions"]) cpp(("C++")) -.-> cpp/OOPGroup(["OOP"]) cpp(("C++")) -.-> cpp/IOandFileHandlingGroup(["I/O and File Handling"]) cpp(("C++")) -.-> cpp/SyntaxandStyleGroup(["Syntax and Style"]) cpp(("C++")) -.-> cpp/BasicsGroup(["Basics"]) 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{{"Copiar Contenido de Archivos en C++"}} cpp/function_parameters -.-> lab-96158{{"Copiar Contenido de Archivos en C++"}} cpp/classes_objects -.-> lab-96158{{"Copiar Contenido de Archivos en C++"}} cpp/output -.-> lab-96158{{"Copiar Contenido de Archivos en C++"}} cpp/files -.-> lab-96158{{"Copiar Contenido de Archivos en C++"}} cpp/code_formatting -.-> lab-96158{{"Copiar Contenido de Archivos en C++"}} end

Incluir archivos de encabezado y espacios de nombres

En el primer paso, incluiremos los archivos de encabezado necesarios y los espacios de nombres para continuar con el código.

#include <iostream>
#include <fstream>

using namespace std;

Copiar un archivo a otro

En este paso, realizaremos las siguientes acciones:

  1. Crear objetos de las clases ifstream y ofstream.
  2. Verificar si están conectados a sus respectivos archivos. Si es así, continuar; de lo contrario, comprobar los nombres de archivo dos veces. Leer el contenido del archivo fuente utilizando el método getline() y escribirlo en el destino utilizando el operador << (es decir, copiar cada línea del objeto ifstream al objeto ofstream).
  3. Cerrar los archivos después de la copia utilizando el método close().
void copyFile(string sourceFile, string destinationFile){

    string line;

    // creando objetos ifstream y ofstream
    ifstream sourceFileStream(sourceFile);
    ofstream destinationFileStream(destinationFile);

    // Leyendo del archivo fuente y escribiendo en el archivo destino
    if(sourceFileStream.is_open() && destinationFileStream.is_open()){
        while(getline(sourceFileStream, line)){
            destinationFileStream << line << "\n";
        }
        cout<<"Copia terminada"<<endl;
    }
    else{
        printf("No se puede leer el archivo");
    }

    // cerrando archivo
    sourceFileStream.close();
    destinationFileStream.close();
}

Función principal

En este paso, crearemos una función principal para realizar la operación de copia de archivos llamando a nuestra función copyFile().

int main(){

    string sourceFile = "original.txt";
    string destinationFile = "copy.txt";

    copyFile(sourceFile, destinationFile);

    return 0;
}

Compilar y ejecutar

En este paso, dado que el archivo de código se guarda en ~/proyecto/main.cpp, podemos cambiar el directorio actual a ~/proyecto y ejecutar los siguientes comandos en la terminal:

g++ main.cpp -o main
./main

Esto compilará y ejecutará el programa y generará la salida:

Copia terminada

Código final

#include <iostream>
#include <fstream>

using namespace std;

void copyFile(string sourceFile, string destinationFile){

    string line;

    // creando objetos ifstream y ofstream
    ifstream sourceFileStream(sourceFile);
    ofstream destinationFileStream(destinationFile);

    // Leyendo del archivo fuente y escribiendo en el archivo destino
    if(sourceFileStream.is_open() && destinationFileStream.is_open()){
        while(getline(sourceFileStream, line)){
            destinationFileStream << line << "\n";
        }
        cout<<"Copia terminada"<<endl;
    }
    else{
        printf("No se puede leer el archivo");
    }

    // cerrando archivo
    sourceFileStream.close();
    destinationFileStream.close();
}

int main(){

    string sourceFile = "original.txt";
    string destinationFile = "copy.txt";

    copyFile(sourceFile, destinationFile);

    return 0;
}

Resumen

En este laboratorio, se creó una aplicación que permite a los usuarios copiar el contenido de un archivo a otro archivo utilizando métodos de manipulación de archivos en el lenguaje C++.