C++ 11ではstd::to_string
が導入されています。そのため、実装では、vsnprintf
を内部的に呼び出しています。さて、なぜサイズのパラメータを型のサイズの4倍に設定するのですか?なぜstd :: to_stringの実装は、型のサイズの4倍のバッファを作成するのですか?
inline string
to_string(int __val)
{ return __gnu_cxx::__to_xstring<string>(&std::vsnprintf, 4 * sizeof(int),
"%d", __val); }
inline string
to_string(unsigned __val)
{ return __gnu_cxx::__to_xstring<string>(&std::vsnprintf,
4 * sizeof(unsigned),
"%u", __val); }
inline string
to_string(long __val)
{ return __gnu_cxx::__to_xstring<string>(&std::vsnprintf, 4 * sizeof(long),
"%ld", __val); }
これは、intのすべてのサイズ(1以上)に対して、文字列と末尾のゼロを収容するのに十分な大きさのバッファを作成します。 –
無料レビュー:彼らは本当に私の意見で 'sizeof __val'を使用していたはずです。 – unwind