使用Visual Studio C ++尝试使用ifstream :: read()复制WAV文件的数据部分。溪流怪异地跳来跳去

时间:2019-02-14 16:37:34

标签: c++ visual-studio wav ifstream

这是我使用的第一个代码:

ifstream wavFile;
wavFile.open("saxaphone.wav");
char buffer[10000];
wavFile.seekg(44);  //data starts at the 44 byte of a wav file
wavFile.read(buffer, 10000);  
//file has more than 13000 data bytes so there should
//be plenty to fill the buffer

当我使用Windows waveOut API播放此缓冲区时,它只播放了大约5000个缓冲区值的连贯声音。

这是我用来尝试和调试的代码:

ifstream wavFile;
wavFile.open("saxaphone.wav");
char buffer[10000];
wavFile.seekg(44);  //data starts at the 44 byte of a wav file
for(unsigned int i = 0; i < 10000; i++){
     wavFile.read(&buffer[i], 1);
     cout << wavFile.tellg() << '\n';
}

此输出值从45到4000s的某个位置,然后又跳到8000s的某个位置,然后又开始加1。我尝试了不同的文件,看是否是问题所在,并且它做同样的事情。我该如何解决?

0 个答案:

没有答案