Opening a file with std::ios::app adds new output to the end instead of replacing the file.

Append File Stream

append_file_stream.cpp
#include <cstdio>
#include <fstream>
#include <iostream>
#include <string>

int main() {
    std::string extraLine = ;
    std::string filename = "append_log.txt";

    std::ofstream start(filename);
    start << "plan" << std::endl;
    start << "build" << std::endl;
    start.close();

    std::ofstream append(filename, std::ios::app);
    append << extraLine << std::endl;
    append.close();

    std::ifstream input(filename);
    std::string line;
    std::string last;
    int count = 0;

    while (std::getline(input, line)) {
        ++count;
        last = line;
    }

    std::cout << "lines=" << count << std::endl;
    std::cout << "last=" << last << std::endl;
    std::remove(filename.c_str());
    return 0;
}
#include <cstdio>
#include <fstream>
#include <iostream>
#include <string>

int main() {
    std::string extraLine = ;
    std::string filename = "append_log.txt";

    std::ofstream start(filename);
    start << "plan" << std::endl;
    start << "build" << std::endl;
    start.close();

    std::ofstream append(filename, std::ios::app);
    append << extraLine << std::endl;
    append.close();

    std::ifstream input(filename);
    std::string line;
    std::string last;
    int count = 0;

    while (std::getline(input, line)) {
        ++count;
        last = line;
    }

    std::cout << "lines=" << count << std::endl;
    std::cout << "last=" << last << std::endl;
    std::remove(filename.c_str());
    return 0;
}
#include <cstdio>
#include <fstream>
#include <iostream>
#include <string>

int main() {
    std::string extraLine = ;
    std::string filename = "append_log.txt";

    std::ofstream start(filename);
    start << "plan" << std::endl;
    start << "build" << std::endl;
    start.close();

    std::ofstream append(filename, std::ios::app);
    append << extraLine << std::endl;
    append.close();

    std::ifstream input(filename);
    std::string line;
    std::string last;
    int count = 0;

    while (std::getline(input, line)) {
        ++count;
        last = line;
    }

    std::cout << "lines=" << count << std::endl;
    std::cout << "last=" << last << std::endl;
    std::remove(filename.c_str());
    return 0;
}
append mode Append mode preserves existing file contents and writes new data after them.