1

我正在尝试使用该函数存储文件的第一个4 chars.awvstd::fgetc

这就是我所拥有的

FILE* WAVF = fopen(FName, "rb");
std::vector<std::string> ID;
ID[4];
for (int i = 0; i < 4; i++)
{
    ID[i] = fgetc(WAVF);
}

我不断收到此错误:

Exception thrown at 0x00007FF696431309 in ConsoleApplication3.exe: 
0xC0000005: Access violation writing location 0x0000000000000010.
4

1 回答 1

4

您的程序有未定义的行为

你的向量ID是空的。通过调用operator[]一个空的std::vector,调用一个未定义的行为。你很幸运你的程序崩溃了,说“访问冲突”。

你需要:

// create a vector of string and initialize 4 empty strings
std::vector<std::string> ID(4); 

for (auto& element: ID)
{
    element = some `std::string`s
}

但是,在您的情况下,std::fgetcintger 返回为

成功或EOF失败时获得的字符。

因此,您可能需要诸如std::vector<char>or (at best)之类的数据结构std::string

于 2021-10-27T12:51:10.513 回答