Я не знаю, если у вас все еще есть эта проблема, но если у вас есть, не могли бы вы рассказать немного о том, что именно вы пытаетесь достичь.Дело в том, что внутренне символ и символ без знака одинаковы.Они всего лишь 8 бит сидят где-то.Нет преобразования не требуется.
Единственное отличие состоит в том, как компилятор интерпретирует их, когда вы их используете.Это означает, что вы сможете решить большинство проблем, используя static_cast во время использования.
Кстати, std :: cout выведет неподписанный символ, идентичный символу.Если вы хотите получить числовое значение, вы должны привести его дважды:
array_stream s; //initialized properly in the code
unsigned char asd;
s >> asd;
std:cout << int( asd );
Я вижу в этом неудобство и, возможно, boost :: iostreams может как-то это сделать, но я никогда не использовал boost:: iostreams и, глядя на количество ответов здесь, не многие могут вам помочь.Если ничего не помогает, просто переосмыслите данные.В любом случае преобразование было бы плохой идеей, если бы это означало копирование всего этого.