Ja, det ser jo ok ud, men der er en lille fejl, den vil (sansynligvis) læse sidste tal 2 gange. Hvilket følgende kode viser, den viser også hvordan man kan undgå at få læst sidste tal to gange.
#include <iostream>
#include <fstream>
int main()
{
float d[3] = {0.1, 0.2, 0.3};
// Write 3 floats to file
std::fstream out("C:\\\\test.dat", std::ios::out | std::ios::binary);
int i;
for(i = 0; i < 3; i++)
out << d[i] << " ";
out.close();
// read them back in
std::fstream in("C:\\\\test.dat", std::ios::in | std::ios::binary);
float f;
while(!in.eof())
{
in >> f;
std::cout << "I have read: " << f << std::endl;
}
in.close();
// read them back in 2
std::fstream in2("C:\\\\test.dat", std::ios::in | std::ios::binary);
while(in2 >> f)
{
std::cout << "I have read: " << f << std::endl;
}
in2.close();
return 0;
}
Grunden til at den læser sidste tal to gange er at eof først fortæller at den er ved enden af filen når man har forsøgt at læse ud over enden på filen.
Den første loop læser 0.3 to gange, den sidste gør ikke.