Ten post jest stary, ale wyświetla się na pierwszych pozycjach w google, a tyle tu głupich odpowiedzi można wyczytać, że aż przykro. Tymczasem rozwiązanie okazuje się być bardzo proste. Wystarczy zrobić uchwyt do odczytu i zapisu jednocześnie.
Jedyne co, to istotne jest to to że tym sposobem można jedynie nadpisywać znaki. Jeżeli np. jakaś liczba zmieni się z 8 na 12 to masz problem bo to nie jest notatnik, że ci ładnie rozepchnie całą resztę dla dodatkowego znaku.
std::fstream plik;
plik.open("C:\\Twoja\\ścieżka\\do\\pliku.txt", std::ios::in|std::ios::out);
plik.seekp(5, std::ios::cur); //Przesuń pozycję kursora do zapisu o 5 znaków w prawo
plik<<zmienna_ktora_chcesz_zapisac<<std::endl;
plik.close();