itoa函數的編寫

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;
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章