Вы можете добавить нулевой символ, используя метод потока put()
:
my_wstringstream.put(0);
Добавить DWORD
(то, что вы показали на самом деле WORD
) сложнее. Вы не можете использовать оператор <<
, который отформатирует числовое значение в текстовое представление, а это не то, что вы просите. Вместо этого вам придется разбить значение на отдельные байты, а затем put()
каждый байт, как если бы это был символ:
my_wstringstream.put(0).put(0x00).put(0x1A);
Однако обратите внимание, что wchar_t
- это , а не 2 байта на каждой платформе, вместо этого может быть 4 байта. Таким образом, используя std::wstringstream
и std::wstring
, вы не гарантируете , чтобы получить точный вывод, который вы ищете на всех платформах. вместо этого вы можете получить следующее:
hex:54,00,00,00,65,00,00,00,78,00,00,00,74,00,00,00,00,00,00,00,00,00,00,00,1a,00,00,00
T e x t \0 00 1A
Если вам нужна согласованность на нескольких платформах, вы можете использовать std::basic_stringstream<char16_t>
и std::u16string
. Или используйте std::stringstream
и std::string
(которые основаны на 1-байте char
) и просто запишите все отдельные байты вручную.