如何最好地实施itoa和atoi?

时间:2019-02-08 02:13:45

标签: data-structures type-conversion

C / C ++库带有两个函数,即“ itoa”和“ atoi”-前者将整数值转换为字符数组。后者反之亦然,其中包含数字值的字符串数组。这两个函数中的数值都可以是正整数或负整数。

我实现了以下功能: itoa功能

#include <iostream>
#include <algorithm>

void my_itoa(int num, char* str) 
{
    bool isNeg=false;
    if(num < 0)
      isNeg = true;

    int idx = 0;
    do {
       int j = num % 10;
       j = j < 0 ? j * -1 : j ;
       str[idx++]=j+48;
       num=num/10;
    } while (num!=0);
    if(isNeg)
       str[idx++]='-';
    str[idx]='\0';

    std::reverse(str, str+idx);
}

atoi功能

void my_atoi(char* str,int& i) 
{
  bool isNeg = false;
  if(*str == '-') {
    isNeg=true;
    str++;
  }
  i=0;
  while(*str!='\0') {
    i =i*10 + (*str - 48);
    str++;
  }
  if(isNeg) 
    i=i*-1;
}

驱动程序代码

int main()
{
    char str[100];
    my_itoa(-1234, str);
    std::cout << "Str =" << str << std::endl;
    int j=0;
    my_atoi(str,j);
    std::cout << "j= " << j << std::endl;
    return 0;
}

我想看看我如何获得它们的生产质量代码-因为以上内容的性能并没有真正达到标准库的标准。

0 个答案:

没有答案