如何从vector <char>中复制一个整数

Kad*_*mir 4 c++ stdvector

我现在正在使用wav文件,我正在解析它们.我现在不想使用库.我用fstream打开wav文件并将所有数据读取到vector.现在我想解析wav文件头.例如,我想获得第4到第8个字节之间的文件大小.我想将它分配给一个整数.我很容易用memcpy完成这个.但是因为它是C++我不想使用memcpy.我最终得到的解决方案:

std::vector<unsigned char>::iterator vectorIte = soundFileDataVec.begin();
vawParams.totalfilesize = 0;
//Since it is little endian I used reverse_copy
std::reverse_copy(vectorIte + 4, vectorIte + 7, (unsigned char*)&vawParams.totalfilesize);
Run Code Online (Sandbox Code Playgroud)

我不满意(unsigned char*)强制转换为整数指针.我怀疑有比我更好的方法.能告诉我一个更好的方法吗?

eme*_*esx 6

向量使用连续的存储位置作为元素,可以使用常量指向其元素的偏移来访问它们的元素.因此,如果您不想要memcpy一个简单的解决方案是:

int header = *reinterpret_cast<const int*>(&soundFileDataVec[4]);
Run Code Online (Sandbox Code Playgroud)

这会读取四个字节(您可能需要从一个字节序转换为另一个字节序).