efficient integer to string

注意点

  • 写c++ 模板函数,可以涵盖使用 int, short, long, long long 类型的各个类型
  • 注意char 数值的大小
  • 考虑负数case

在muduo 库中看到一种很好的写法,记录下来

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
char digits[] = "9876543210123456789";
int zero = 9;
template <typename T>
int IntToString(char buf[], T t)
{
int64_t num = static_cast<int64_t>(t);
int size = 0;
int i = 0;
do {
int index = static_cast<char>(num % 10);
num = num/10;
buf[i++] = digits[zero+index];
size++;
} while (num != 0);
if (t < 0) {
buf[i++] = '-';
}
buf[i] = '