Hola, como estan? aqui yo molestando con un nuevo problema jaja, a ver si me pueden ayudar. Bueno, resulta que quiero sacar el tamaño del archivo con tellg y siempre me da -1 (con tellp me da lo mismo), y no le encuentro la vuelta, no se en que puedo estar fallando.
Aca les dejo dejo el codigo
Código C++:
Ver original#include <iostream>
#include <fstream>
using namespace std;
class prueba {
int p;
public:
void escribir();
void leer();
};
void prueba::escribir() {
cin>>p;
}
void prueba::leer() {
cout<<"Numero "<<p<<endl;
}
int main(int argc, char *argv[]) {
prueba P[3];
fstream archivo;
archivo.open("probar", ios::in | ios::out | ios::binary);
archivo.seekg(0);
for(int i=0; i<3;i++){
cout<<"Numero "<<i+1<<": ";
P[i].escribir();
archivo.write((char *) &P, sizeof P);
}
archivo.seekg(0);
cout<<"\n";
for(int i=0; i<3; i++) {
archivo.read((char *) &P, sizeof P);
P[i].leer();
}
int L = sizeof(P);
cout<<"\n";
cout<<"Longitud archivo: "<<L;
cout<<"\n";
int m;
cout<<"Ingresar numero de objeto: ";
cin>>m;
int pos = (m-1) * L;
//cout.setf(ios::hex, ios::basefield);
cout<<"Posicion Objeto: "<<pos<<"\n";
archivo.seekg(0);
int start = archivo.tellg ();
cout<<"Start: "<<start<<endl;
archivo.seekg (0, ios :: end);
int end = archivo.tellg ();
cout<<"End: "<<end<<endl;
int size = (end - start);
cout<<"Size: "<<size<<endl;
archivo.seekg(0, ios::end);
long TamTotal = archivo.tellg();
cout<<"Tamanio Total: "<<TamTotal;
cout<<"\n";
int CantObj = TamTotal/L;
cout<<"Cantidad de Objetos: "<<CantObj;
archivo.close();
return 0;
}
Por ahi tambien puede ser que algunas de las sentencias tengan un error logico y no me estoy dando cuenta, lo raro es que siempre me da como resultado -1