Это правильно для всех компиляторов C ++? Или я должен вместо этого приводить к int первым?
int8_t i = -128;
std::string = boost::lexical_cast<std::string>((int16_t)i)
Вы можете использовать std::to_string
Функция для этого:
std::int8_t i = -128;
std::string s=std::to_string(i);
http://en.cppreference.com/w/cpp/string/basic_string/to_string
НОТА:
Я предположил C ++ 11, потому что типы с фиксированной шириной добавлены только в C ++ 11
http://en.cppreference.com/w/cpp/types/integer
Если это не C ++ 11 (и вы получаете форму typedef где-то еще (C99?)), Тогда вы можете просто указать тип источника в качестве параметра шаблона.
std::string str=boost::lexical_cast<std::string, int>(i);
http://www.boost.org/doc/libs/1_40_0/libs/conversion/lexical_cast.htm#synopsis
Других решений пока нет …