itoa函數的編寫主要考慮一下幾個方面的因素:
1)數字的正負號
2)如果是0時,影響value/radix的判斷,所以要用do while循環來計算
3)如何反轉轉換後的數據,首尾兩指針交換數據
4)擴展性方面使用radix
5)使用character數組來,實現轉換,有利於擴展到16進制的情況
具體代碼如下:
std::string Itoa(int value, int radix, std::string* s) {
(*s) = "";
static char character[] = "0123456789ABCDEF";
if (value < 0) {
(*s) = "-";
value *= -1;
}
do {
(*s) += character[value % radix];
} while ((value /= radix) >0);
int start = 0;
int end = (*s).size() - 1;
if ((*s).size() >0 && (*s)[0] == '-') {
start = 1;
}
char tmp;
while (start < end) {
tmp = (*s)[start];
(*s)[start] = (*s)[end];
(*s)[end] = tmp;
start++;
end--;
}
return *s;
}