stackoverflow 上有很多关于读写无符号字符的帖子。这些帖子推荐使用reinterpret_castfor cast from unsigned char*to char *。我想知道为什么需要它,因为这两种类型的大小相同。
我在 Windows 和 Linux 上运行下面的代码,它工作正常(有或没有重新解释演员)。我错过了什么吗?有人可以发布一个没有它就无法工作的代码reinterpret_cast吗?请注意,我说的是unsigned char(不是unsigned int)。
#include <iostream>
#include <fstream>
std::ofstream os;
unsigned char *buff = new unsigned char[3]{ 0xe4, 0xe1, 0xd4 };
os.open("image.jpg", std::ios::out | std::ios::binary);
os.write(reinterpret_cast<char*>(buff), 3 * sizeof(unsigned char));
// or: os.write((char*)(buff), 3 * sizeof(unsigned char));
os.close();
std::ifstream file;
memset(buff, 0, 3 * sizeof(unsigned char));
file.open("image.jpg", std::ios::in | std::ios::binary);
file.read(reinterpret_cast<char*>(buff), 3 * sizeof(unsigned char));
//or: file.read((char *)buff, 3 * sizeof(unsigned char));
file.close();