0
私は学校にTurbo C++を強制します。私は「STU」クラスのオブジェクトS1の大きさを保存するために長い変数を使用した場合DFH:fin.seekg()で奇妙な出力を与えるSizeof(Object);
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();
}
この機能は、予想される出力を返しました: はこちら機能です。
ですが、sizeof()を使用します。直接それは、この奇妙な出力を提供します:unsigned int
オーケーであるstreamsizeを期待し、私はその乱数を説明する方法を参照してください。しかし、なぜそれはまだ正常にファイルを読んだのですか? 'istream :: read'は標準関数の大部分であるので、かなり安全であり、読み込めませんが存在しないもののいくつかの警告フラグがセットされているので、ごみの値 –
@ AlphaMineronを期待していました。 (チェックしてください)。参考資料を調べるのは良い習慣にしてください:) – Sam
さて、私はそれをやり始めます。しかし、私はドキュメントを理解していないのは普通ですか?たとえば、あなたの答えにリンクしているcppreference.comのリンクは、ページのすべてを完全に理解することができませんでした。私はこれがちょうど初心者の闘いだと信じていますよね? –