我需要将字节写入文件。一个字节的自然表示是std::uint8_t
. 问题是istream.read()
和sostream.write()
一起工作char
。我可以在这两种类型之间进行转换,例如:
char c;
input.read(&c, 1);
uint8_t b = (uint8_t)c;
uint8_t b = …;
char c = (char)b;
output.write(&c, 1);
这可能是一个问题,因为char
通常是有符号类型,并且 AFAIK 无法保证写入的位模式与int8_t
最初包含的位模式相同。
我需要确保它适用于编译器和操作系统,这样如果我在一台计算机上写东西,它会在任何其他计算机上读取相同。
有没有符合标准的方法来做到这一点?