Проблема в том, что NUL-оканчивающаяся строка (это то, что каждый понимает голый const char *
без явной длины как) завершается NUL. Таким образом, ваша строка имеет только один символ, и печатается только один - символ '\x32'
, находящийся в памяти, не является частью строки. По определению, такая строка не может содержать символ '\x00'
, поскольку она заканчивается строкой.
Вам потребуется использовать другое представление, которое может содержать NUL, например std::string
:
int main ()
{
std::string blob("\x31\x00\x32", 3);
std::cout <<"hexChar=" << blob << std::endl;
return 0;
}