Замена делается вот так:
ofstream f("text.txt");
f.write("abcde",5);
f.close();
f.open("text.txt", ofstream::binary | ofstream::out | ofstream::in);
f.seekp(1);
f.write("zxc",3);
Добавить и удалить байты без перезаписи файла нельзя, считайте что они располагаются подряд, когда вы удаляете, все позадистоящие байты сдвигаются влево. Если очень хочется совсем без перезаписи, зафиксируйте размеры строк для имени и фамилии - в бд так и делается.