PDA

View Full Version : [C++]Fstream e lettura errata dei file


Braccop
26-06-2009, 21:56
mi sto scontrando ancora una volta con questo strano comportamento del C++ che non riesco proprio a spiegarmi e mi sta dando non pochi problemi, vado subito al dunque:

(premetto che ne ho provate di tutti i colori per aggirare il problema ma non ne sono mai venuto a capo in modo corretto)

codice di esempio:

#include <cstdlib>
#include <iostream>
#include <fstream>

using namespace std;

int main(int argc, char *argv[])
{
fstream f;
f.open("prova.txt", ios::in);
f.seekg (0, ios::end);
int length = f.tellg();
if (length == -1){
//todo: gestione errore
f.close();
return 0;
}
f.seekg (0, ios::beg);
char * buf = new char[length];
f.read(buf,length);
std::string sxml( buf, 0, length ); //mai capito xche legge piu roba...
cout << sxml <<endl;
system("PAUSE");
return EXIT_SUCCESS;
}


file di esempio da far leggere al programmino:
<?xml version="1.0"?>
<Prova>
<Generale>
<ciao>hey</ciao>
</Generale>
</Prova>


quel che succede e' che il file viene letto, e assieme a lui un tot (variabile, a seconda della dimensione del file...) di caratteri spuri.

l'output del suddetto programma e' :


<?xml version="1.0"?>
<Prova>
<Generale>
<ciao>hey</ciao>
</Generale>
</Prova>on7\T
Premere un tasto per continuare . . .


come potete notare alla fine c'e' un "on7\T" di troppo. perche'? e come posso risolvere?

ps: compilatore minGW (3.4.2?) su Dev-Cpp