C ++-std :: fstream read()无法读取完整文件

问题描述 投票:0回答:1

我想创建一个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();
c++ fstream
1个回答
0
投票

默认情况下,文件流使用“ 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();
© www.soinside.com 2019 - 2024. All rights reserved.