[求助]C++关于fstream的eof
我的代码如下:
int _tmain(int argc, _TCHAR* argv[])
{
fstream file;
file.open( "basic_istream_tellg.dat", ios::out|ios::binary);
if (!file.is_open()) {
printf("error\n");
exit(-1);
}
char* buf = "Students";
int len = strlen(buf)+1;
file.write((char*)&len,sizeof(int));
file.write(buf, len);
file.close();
file.open( "basic_istream_tellg.dat", ios::in|ios::binary);
if (!file.is_open()) {
printf("error\n");
exit(-1);
}
file.seekg(streampos(0));
file.unsetf(ios::skipws);
bool end=false;
while(!end) {
if(file.eof())
{
end=true;
break;
}
char* buffer;
file.read((char*)&len,sizeof(int));
buffer = new char[len];
file.read(buffer, len);
printf(buffer);
}
file.close();
return 0;
}
但输出为:Students屯屯屯屯妄铪
为什么?