【发布时间】:2014-10-28 16:57:31
【问题描述】:
当我通过 fstream 读取信息时,它在两个不同的程序中发生了两次,即使给定的文件没有更改,给我的程序的输入也不稳定。
在我最近的程序中,该程序与音频阅读有关。我正在对文件中的前四个字母进行简单检查。这些字母应该是 RIFF,它们也是 - 我检查了。
因此,为了检查给定二进制文件的格式,我缓冲了前四个字母并查看它们是否等于“RIFF”。
char buffer[4];
std::ifstream in(fn,std::ios::binary);
in.read(buffer,4);
if(buffer!="RIFF"){//Always wrong atm
std::cout << "INVALID WAV FILE: " << buffer << std::endl;
}
当我第一次制作程序时,我记得它工作正常。但是现在,我通过自己的 cout 得到了一个错误:
INVALID WAV FILE: RIFFýfK
有人知道出了什么问题吗?也许是一种让 fstream 更加一致的方法?
【问题讨论】:
-
你必须把 \0 放在缓冲区的末尾
-
上面的代码适合放在哪里?
-
buffer!="RIFF"将指向buffer的指针与指向字符串文字的指针进行比较。也许strncmp().