C++ 11 giới thiệu std::to_string
, vì vậy tôi đã xem xét một triển khai: nó gọi vsnprintf
nội bộ. Được rồi, nhưng tại sao nó luôn đặt tham số kích thước gấp 4 lần kích thước của loại?Tại sao việc triển khai std :: to_string tạo bộ đệm 4 lần kích thước của loại?
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); }
nó sẽ tạo bộ đệm đủ lớn để chứa chuỗi cộng với dấu 0 cho tất cả các kích cỡ của int, từ 1 trở lên. –
Đánh giá miễn phí: họ thực sự nên sử dụng 'sizeof __val' theo ý kiến của tôi. – unwind