Problema seekp() C++

Boa tarde pessoal!

Estou com o seguinte problema.
Eu posiciono o ponteiro seekp() na posicao que eu quero, mas ele nao grava na posicao indicada mas sim
no final do arquivo.

segue em anexo o modelo de como que estou abrindo o arquivo e como que estou posicionando o ponteiro no arquivo.

template
void Tabela::alteraReg(T elem, long pos){
ofstream out;
ostringstream os;
os << "Database/ " << nome << “.tbl”;
out.open((os.str().c_str()), ios::binary | ios::app); // abre o arquivo como append e binario
out.seekp(pos); //posiciona o ponteiro na posicao do objeto a ser alterado
out.write((char*) &elem, sizeof(T)); //sobrescreve o objeto
out.close();
}

se alguem souber me da um help fazendo o favor
att
bruno quintanilha

o pessoal ja consegui resolver meu problema

na hora de abrir é so colocar

fstream out;
out.open("os.str().c_str(), ios::in|ios::out);

nao sei por que cargas d’agua qndo eu abro como append e dpois reposiciono o ponteiro ele nao consegue
gravar na posiçao indicada pelo seekp();

flw ai pessoal

Por que append significa que você não quer sobrescrever o arquivo, e sim, colocar mais dados ao final dele (a palavra append significa anexo).