使用ifstream进行等效的fread

时间:2011-06-07 01:51:05

标签: c++

我想使用ifstream来读取n数据块fread,是否可以使用ifstream在C ++中实现类似的功能?

我尝试加载TGA文件,其标题如下:

struct TgaHeader {
    char identSize;
    char colorMapType;
    char imageType;
    unsigned short colorMapStart;
    unsigned short colorMapLength;
    unsigned char colorMapBits;
    unsigned short xstart;
    unsigned short ystart;
    unsigned short width;
    unsigned short height;
    char bits;
    char descriptor;
};

使用fread读取标题:

TgaHeader tgaHeader;
fread( &tgaHeader, 18/* sizeof( TgaHeader )*/, 1, pFile );

现在我想将它与ifstream一起使用,但没有可用的等效函数。 ifstream仅提供read功能,允许读取n大小的指针。那么我怎么能说使用n来阅读x字节的fstream标题呢?

谢谢,

1 个答案:

答案 0 :(得分:0)

正如问题中的评论所说,您需要basic_istream<>::read()并使用size * count而不是fread()的两个单独参数。