0
Bare mit mir, meine Schule zwingt mich, Turbo C++ zu verwenden. Hier ist die Funktion :DFH: Sizeof (Objekt) gibt seltsame Ausgabe mit fin.seekg();
void debugged_read()
{
clrscr();
stu S1;
ifstream fin;
eof=false;
fin.open("CP2.dat", ios::binary); //Opens the file again
while(fin.eof() == false) {
cout<<"\n\n Initial location: "<<fin.tellg();
fin.read((char*)& S1, sizeof(S1)); //Reads a Record into fin stream
S1.show();
cout<<"\n\n After Read location: "<<fin.tellg();
fin.read((char*)& S1, sizeof(S1)); //Reads the next record space for eof detection
cout<<"\n Check position: "<<fin.tellg();
if(fin.eof() == true) {
cprintf("\nWARNING: End of file Incoming!");
break; //Break on eof encounter
}
else {
fin.seekg(-(sizeof(S1)), ios :: cur); //File Pointer Correction
cout<<"\n File Pointer Corrected: "<<fin.tellg();
}
}
cout<<"\nRead Successful!";
fin.close();
}
dieser Funktion zurück einen erwarteten Ausgang, wenn ich eine lange Variable verwendet zum Speichern der Größe des Objekts S1 von ‚STU‘ -Klasse.
aber mit der sizeof(); direkt es diese seltsame Ausgang gibt:
in Ordnung, ich sehe, wie das erklärt, dass Zufallszahl. Aber warum hat es die Datei immer noch normal gelesen? Ich erwartete einige Garbage-Werte –
@AlphaMineron, weil 'istreamream_read', wie die Mehrheit der Standardfunktionen, ist ziemlich gut gesichert und es liest nicht, dass nicht existiert, sondern setzt einige Warnflags, die Sie können (und sollte) überprüfen. Mach dir einfach eine gute Angewohnheit, in die Referenzdokumentation zu schauen :) – Sam
Okay, ich werde damit anfangen. Ist es normal, dass ich die Dokumentation nicht verstehe? Zum Beispiel die cppreference.com-Links, die Sie in Ihrer Antwort verlinkt haben, konnte ich nicht alles auf der Seite vollständig verstehen. Ich glaube, das ist nur der Kampf der Anfänger, oder? –