Используйте конструктор итератора:
std::string my_std_string(my_txt, my_txt + my_txt_len);
Предполагается, что вы хотите, чтобы неподписанные символы были преобразованы в символы. Если вы хотите, чтобы их интерпретировали, вам следует использовать reinterpret_cast
. Это было бы совершенно чисто, поскольку то, что вы говорите, это именно то, что сделано.
В вашем примере, однако, это не имеет никакого значения, потому что все значения в вашем массиве находятся в диапазоне от 0
до CHAR_MAX
. Таким образом, гарантируется, что эти значения представлены в char
таким же образом, как и в unsigned char
, и, следовательно, что их повторная интерпретация аналогична преобразованию. Если у вас были значения больше CHAR_MAX
, то реализации могут обрабатывать их по-разному.