Я пытаюсь записать неподписанные символы в строковый поток.
Информация, которую мне нужно записать, связана с 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, но это, похоже, создает беспорядок приведения и тому подобное. Я боюсь, что это может быть тот маршрут, который требуется, но я хочу быть уверен, прежде чем идти делать это.
Короче говоря, я пытаюсь найти С++, эквивалентный С# BinaryReader/Writer.
Спасибо!