正在读取 RAW 音频文件



我是C++的初学者,我有一个学校项目,暗示分析音频文件,但我无法读取该文件,在示例中,程序不断从文件中读取第一个值

#include <iostream>
#include<fstream>
using namespace std;
int main()
{
    ifstream c;
    c.open("cv.RAW");
    int b;
    while(1)
        {
            c>>b;
            cout<<b<<" ";
        }
    return 0;
}

你需要

  1. 以二进制模式打开文件 ifstream c("cv.RAW", std::ios_base::binary) ,如果您读取没有此标志的二进制文件,它将被视为文本文件,并会给您不正确的值。
  2. 在读取任何值之前,通过检查if (c.good())或仅if (c)来检查文件是否已打开
  3. 通过再次检查if (c.good())或在读取每个字节后仅if (c)来检查读取是否成功
  4. 使用 c.read((char*)&b, sizeof(b)) 读取 如果要一次读取一个整数,对于单字节,请使用 char ch; c.read(&ch, sizeof(ch))

默认情况下,iostreams 不会引发异常,因此每次使用它们时始终需要检查其状态。

最新更新