我有一些数据在std::istream
中,需要保存到磁盘上。这是我的草稿:
std::istream& i_stream = ReceiveBytes();
FILE* pFile;
pFile = fopen("C:\\my_file.exe", "wb");
char buffer[1024] = {0x0};
i_stream.read(buffer, 1024);
std::streamsize n = i_stream.gcount();
while (n > 0)
{
if (i_stream)
{
fwrite(buffer, sizeof(char), sizeof(buffer), pFile);
i_stream.read(buffer, 1024);
n = i_stream.gcount();
}
else n = 0;
}
fclose(pFile);
由于某种原因,我没有保存从i_stream
读取的所有数据,我在i_stream
末尾丢失了约50个字节。在代码中哪里出错了?有没有更好的方法来将std::istream
中的数据保存到文件中?
i_stream.read()
之后,if (i_stream)
失败了,所以最后的fwrite
没有被调用。 - 001fwrite
中,您应该写入n
个字节,而不是sizeof(buffer)
个字节。 - 001