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); 是不可移植的,但是手边没有机器不好测试
我想用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); 是不可移植的,但是手边没有机器不好测试