2

这对所有 C++ 编译器都正确吗?或者我应该先转换为 int 吗?

int8_t i = -128; 
std::string = boost::lexical_cast<std::string>((int16_t)i)
4

1 回答 1

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

于 2012-11-28T14:09:14.240 回答