Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/01/2018, 07:39
aguml
 
Fecha de Ingreso: febrero-2015
Mensajes: 404
Antigüedad: 11 años, 7 meses
Puntos: 3
No puedo escribir en archivo correctamente

Hola amigos, estoy intentando crearme una funcion que escriba en la posicion deseada de un archivo y para ello he probado esto:
Código PHP:
void SendToFile (byte* sentence, int size, uint32_t pos, char *path) {
    
std::ofstream ostr (path);
    if (
ostr) {
        
std::streambuf * pbuf = ostr.rdbuf();
        
//Aqui obtengo el tamaño del archivo
        
std::streamsize sizeStream = pbuf->pubseekoff(0, ostr.end);
        
//Me posiciono en el lugar donde quiero escribir en el archivo
        
pbuf->pubseekoff(pos, ostr.beg);
        
//Escribo lo que quiero en el archivo usando el stream
        
pbuf->sputn (sentence,size);
        
ostr.close();
    }
} 
Y tambien esto:
Código PHP:
void SendToFile (byte* sentence, int size, uint32_t pos, char *path) {
    
std::ofstream ostr (path);
    if (
ostr) {
        
//Obtengo el tamaño del archivo
        
ostr.seekp(0,ios_base::end);
        
int size_file=ostr.tellp();
        
//Me posiciono en la posicion del archivo donde quiero escribir
        
ostr.seekp(pos,ios_base::beg);
        
//Escribo en el archivo lo que quiero
        
ostr.write(sentence,size);
        
ostr.close();
    }
} 
En ambos casos el tamaño del archivo que obtengo es 0 pero no lo es, ni mucho menos, aunque cuando escribo en el si que obtengo un archivo en el que solo está lo que he escrito. ¿Alguien me puede ayudar?