Problema seekp() C++

2 respostas
quintanilhasi

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

2 Respostas

quintanilhasi

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

ViniGodoy

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).

Criado 27 de março de 2011
Ultima resposta 27 de mar. de 2011
Respostas 2
Participantes 2