Search code examples
c++fileappendatomicfwrite

Appending content of text file to another file in C++


How can you open a text file and append all its lines to another text file in C++? I find mostly solutions for separate reading from a file to a string, and writing from a string to a file. Can this elegantly be combined?

It is not always given that both files exist. There should be a bool return when accessing each of the files.

I'm sorry if this is already off-topic: Is appending text content to a file conflict-free in the meaning that multiple programs can do this simultaneously (the order of the lines DOESN'T matter) ? If not, what would be an (atomic) alternative?


Solution

  • I can only speak for opening a file and appending it to another file:

    std::ifstream ifile("first_file.txt");
    std::ofstream ofile("second_file.txt", std::ios::app);
    
    //check to see that the input file exists:
    if (!ifile.is_open()) {
        //file not open (i.e. not found, access denied, etc). Print an error message or do something else...
    }
    //check to see that the output file exists:
    else if (!ofile.is_open()) {
        //file not open (i.e. not created, access denied, etc). Print an error message or do something else...
    }
    else {
        ofile << ifile.rdbuf();
        //then add more lines to the file if need be...
    }
    

    REFERENCES:

    http://www.cplusplus.com/doc/tutorial/files/

    https://stackoverflow.com/a/10195497/866930