背景:在看muduo库的时候,看到一个整型转字符型的函数对指针的运用值得学习和借鉴。
const char digits[] = "9876543210123456789";
const char* zero = digits + 9;
// Efficient Integer to String Conversions, by Matthew Wilson.
//将 整型value转为字符,并保存到buf中
template<typename T>
size_t convert(char buf[], T value)
{
T i = value;
char* p = buf;
do
{
int lsd = static_cast<int>(i % 10);
i /= 10;
*p++ = zero[lsd];//可以看作是zero指针偏移lsd的地址所指的对象
} while (i != 0);
if (value < 0)
{
*p++ = '-';
}
*p = '\0';
std::reverse(buf, p);//反转 [buf,p)范围内的顺序
return p - buf;//返回所用buf长度(没包括'\0')
}