使用ifstream的等效运费

Equivalent fread using ifstream

本文关键字:ifstream 使用      更新时间:2023-10-16

我想使用ifstream来读取像fread这样的n数据块,有没有办法使用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大小的指针。那么,我怎么能说使用fstream读取x字节的n报头呢?

谢谢你,

正如问题下面的注释所说,您希望使用basic_istream<>::read()size * count,而不是fread()的两个单独的参数。