C++ - std::fstream read() 未读取完整文件
C++ - std::fstream read() does not read full file
我想创建一个 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();
我想创建一个 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();