C++11 有这个to_string
功能。在引擎盖下,它用于vsnprintf
将值写入 char 缓冲区。然后这用于初始化返回的字符串。由于vsnprintf
需要正在使用的缓冲区的大小,因此计算并传入。
对于精确类型,大小是使用 计算的sizeof
。例如,对于unsigned long
计算是4 * sizeof(unsigned long)
。
但是对于浮点类型,它的计算方式不同。在这种情况下,所需缓冲区的大小是使用内部计算的
__gnu_cxx::__numeric_traits<float>::__max_exponent10 + 20
我认为这只是一种内部图书馆的写作方式
std::numeric_limits<float>::max_exponent10 + 20
我的问题是,为什么尺寸是这样计算的?为什么他们不能只使用sizeof
运算符。