C++标准流读WAV文件的有关问题

C++标准流读WAV文件的问题
我想用C++写一个读WAV文件的程序,但是读取头信息中的"ChunkSize"时总是不对
程序的主要部分如下:

#include <fstream.h>

class WaveManager
{
public:
WaveManager(ifstream& f);
.........

private:
char chunkID[4];
unsigned long chunkSize;
.............
};

WaveManager::WaveManager(ifstream& f)
{
f>>chunkID>>chunkSize;
}

void main()
{
char *pFileName = "D:\\start.wav";
ifstream h(pFileName);
  WaveManager *w = new WaveManager(h);

}

chunkID可以正确读取的,就是"RIFF"
而chunkSize就不对了
我觉得是ifstream不能直接读写二进制文件中的Unsigned long数据
求高人指点

------解决方案--------------------
所以说为了干掉大小尾机的影响,还是全部映射然后提取比较容易
------解决方案--------------------
我觉得infile.read((char*)&number, 4); 是不可移植的,但是手边没有机器不好测试