C++ Program to Merge Two Files

In this article, you will learn and get code to merge the content of any two files into a third file using a C++ program. The names of all three files must be entered by the user at runtime.

Things to Do Before the Program

Because the purpose of this article is to provide you with the C++ source code for merging two files, you must have or create all three files within the current directory.The current directory is the directory where your C++ source code to merge two files is saved.

Therefore, create the first source file named codes.txt with the following content:

This is codes.txt file

And then create a second source file named cracker.txt with the following content:

This is cracker.txt file

Now create the third file (the target file) without any content (empty content). The name of the third file is codescracker.txt.

You can name the file whatever you want. But remember to provide the names of these files while executing the program given below to merge the content of two files into a third file.

Because I'm going to save my C++ source code given below (to merge two files) in the cpp programs folder present inside its parent directory named Documents in the C-Drive of my computer system, Here is a screenshot of the cpp programs folder:

merge two files c++

As you can see, there are three newly created files inside the folder "cpp programs." And here is the snapshot of all three files with their contents:

merge content of two files into third c++

As you can clearly see, the content inside codes.txt and cracker.txt is available; but the codescracker.txt file is completely empty. Now let's move on to the program to merge the content of two files into the third (target) file.

In C++, merge the contents of two files into a third file

To merge two files in C++ programming, you have to ask the user to enter the names of all three files with their extensions, as shown in the program given below:

To do the task of merging, first receive the names of two files and open them in reading mode. If both files are successfully opened, the input will be used as the name of the third or target file.

The content of the first and second files gets copied one by one into the third file, as shown in the following program.

The question is: write a program in C++ that merges the content of two files into a third file. Here is its answer:

#include<iostream>
#include<fstream>
#include<stdio.h>
using namespace std;
int main()
{
    char fileOne[30], fileTwo[30], fileTarget[30], ch;
    fstream fpsOne, fpsTwo, fpTarget;
    cout<<"Enter the Name of First Source File: ";
    gets(fileOne);
    cout<<"Enter the Name of Second Source File: ";
    gets(fileTwo);
    fpsOne.open(fileOne, fstream::in);
    fpsTwo.open(fileTwo, fstream::in);
    if((!fpsOne) || (!fpsTwo))
    {
        cout<<"\nError Occurred (First Source File)!";
        return 0;
    }
    else
    {
        cout<<"\nEnter the Name of Target File: ";
        gets(fileTarget);
        fpTarget.open(fileTarget, fstream::out);
        if(!fpTarget)
            cout<<"\nError Occurred (Target File)!";
        else
        {
            while(fpsOne>>noskipws>>ch)
                fpTarget<<ch;
            fpTarget<<"\n";
            while(fpsTwo>>noskipws>>ch)
                fpTarget<<ch;
            cout<<"\nContent of Two File Merged Successfully into Third!";
        }
    }
    fpsOne.close();
    fpsTwo.close();
    fpTarget.close();
    cout<<endl;
    return 0;
}

This program was built and runs under the Code::Blocks IDE. Here is its sample run:

C++ program to merge two files

Now supply the names of the first two source files, say, codes.txt and cracker.txt. hen enter the name of the target file, say, codescracker.txt, to merge the content of the first two files into this file. At the start of this article, all three files are created. Now here is the sample output after providing these inputs:

merge two files into third file c++

As you can see, after entering the names of all three files, the message printed is "Content of Two Files Merged Successfully into Third!." Therefore, the content of the first two source files gets merged into the third file. You can open and see the third (target) file. Here is a snapshot of the target file, codescracker.txt, after executing the above program:

c++ merge two files

As you can see, the content of two source files gets merged into the target file. There is a newline inserted between both source files' content through the program.

But if you don't need to insert a newline between the content of both source files, then just remove the following code from the above program:

fpTarget<<"\n";

to copy the content in as it is without adding extra things like a newline.

The fstream library allows working with files. It is defined in the fstream header file.

The function, open() opens the file. It takes two arguments. The first argument is the name of the file, which is a required argument, and the second argument is its opening mode, which is an optional argument. The following code

fpsOne.open(fileOne, fstream::in);

opens the file fileOne in reading mode. And the file opening mode, fstream::out, opens a file in writing mode.

The following statement:

fpsOne>>noskipws>>ch

reads data from file through its stream, fpsOne, in a character-by-character manner without skipping white spaces. And the following statement:

fpTarget<<ch;

writes data to a file through its stream, fpTarget.

The same program in different languages

C++ Quiz


« Previous Program Next Program »


Liked this post? Share it!