我正在尝试将无符号字符写入字符串流。
我需要写的信息涉及0x00。我需要将值 0 到 40 写为实际数值,而不是 ASCII 字符。
编辑:澄清一下,我写的不仅仅是0-40的值。它必须是二进制的。进来的这些东西需要保持原样,而不是一旦写入流就变成字符......
以下是我正在做的事情的概要。
TCHAR _buffer[2]; // This is part of the problem, I figure, since its a char
_buffer[0] = 0x00;
_buffer[1] = 0x01;
tstringstream s;
s.write(_buffer, sizeof(_buffer));
最终发生的是 0x00 导致字符串流结束,而 0x01 似乎永远不会到达那里。
我正在以类似的方式阅读:
stream.readsome(_buffer, sizeof(_buffer));
它似乎不想玩得很好,因为 0x00 被写入并导致整个事情刚刚结束。
就是这样,还是我错过了什么?我尝试过使用 ios_base::binary,也尝试过使用 uint8_t 而不是 TCHAR,但这似乎会造成一团糟。我担心这可能是需要的路线,但我想在我去做之前确定。
长话短说,我正在尝试找到与 C# 的 BinaryReader/Writer 等效的 C++。
谢谢!