这对所有C ++编译器都是正确的吗?或者我应该先转换为int吗?
int8_t i = -128;
std::string = boost::lexical_cast<std::string>((int16_t)i)
答案 0 :(得分:9)
您可以使用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