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 に答える