我有一个char[4] dataLabel当我说
wav.read(dataLabel, sizeof(dataLabel));//Read data label
cout << "Data label:" <<dataLabel << "\n";我得到了输出Data label:data�,但是当我循环遍历每个字符时,我得到了正确的输出,这应该是“数据”。
for (int i = 0; i < sizeof(dataLabel); ++i) {
cout << "Data label " << i << " " << dataLabel[i] << "\n";
}很大的回报4.我不知道问题是什么。
编辑:更让我困惑的是,从本质上讲,与我的程序早期相同的代码工作得非常完美。
ifstream wav;
wav.open("../../Desktop/hello.wav", ios::binary);
char riff[4]; //Char to hold RIFF header
if (wav.is_open()) {
wav.read(riff, sizeof(riff));//Read RIFF header
if ((strcmp(riff, "RIFF"))!=0) {
fprintf(stderr, "Not a wav file");
exit(1);
}
else {
cout << "RIFF:" << riff << "\n";这将按预期打印RIFF:RIFF。
https://stackoverflow.com/questions/31278690
复制相似问题