我是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;
}
你需要
- 以二进制模式打开文件
ifstream c("cv.RAW", std::ios_base::binary)
,如果您读取没有此标志的二进制文件,它将被视为文本文件,并会给您不正确的值。 - 在读取任何值之前,通过检查
if (c.good())
或仅if (c)
来检查文件是否已打开 - 通过再次检查
if (c.good())
或在读取每个字节后仅if (c)
来检查读取是否成功 - 使用
c.read((char*)&b, sizeof(b))
读取 如果要一次读取一个整数,对于单字节,请使用char ch; c.read(&ch, sizeof(ch))
默认情况下,iostreams 不会引发异常,因此每次使用它们时始终需要检查其状态。