我想创建一个MIDI解释器以在更大的项目中使用,但是我目前面临一个巨大的问题:似乎在某些情况下,我的文件没有被完全读取,因此我没有完整的文件。我需要的数据...例如,我有一个大约30 000字节长的文件,而fstream :: read()函数仅读取其中的3000个...
我的代码在下面,如果有人可能有想法...
我没有找到任何类似的问题,但是如果有任何问题,请告诉我。
std::ifstream file;
file.open("Songs/" + filename + ".mid");
if (!file.is_open())
{
std::cerr << "Failed to open file" << std::endl;
return;
}
std::vector<unsigned char> fileData;
while (file.read((char *)&c, 1))
{
fileData.push_back(c);
}
file.close();
默认情况下,文件流使用“ in + out”模式打开文本文件的文件流。尝试完全将“ in”(从文件中读取)和“ binary”(由于文件不是纯文本)组合在一起,如下所示:
std::ifstream file;
file.open("Songs/" + filename + ".mid", std::ios_base::in | std::ios_base::binary);
if (!file.is_open())
{
std::cerr << "Failed to open file" << std::endl;
return;
}
std::vector<unsigned char> fileData;
while (file.read((char *)&c, 1))
{
fileData.push_back(c);
}
file.close();