整数与字符串相互转换

《程序员面试宝典》 第十四章 14.1
整数转字符串
1、考虑情况:整数为负、整数为0
2、需要逆序输出

char * itoa(int num,char *str)
{
    assert(NULL != str);
    int j=0;
    if(num==0) //为0时
    {  str[j++] = '0';
        str[j] = '\0';
        return str;      }

    if(num < 0)
        {   str[j++] = '-';
            num=-num;   }

    char temp[100];
    int k=j;

    while(num)
    {
        temp[k++]=num%10 + '0';
        num/=10;
    }
    k--;
    int i=j;
    while(k >= i)
    {
        str[j++]=temp[k--];
    }
    str[j]='\0';
    return str;

}

程序员面试宝典》 第十四章 14.2
字符串数转整数 num=num * 10+(str[i]-'0');
考虑情况:字符串带符号、字符串中有非法字符

int atoi(string &str)
{
    assert(!(str.size()<1));
    int n=str.size();
    int num=0;
    int j=0;
    int flag=1;
    if(str[0]=='-') {j=1;flag=-1;}
    for(int i=j;i='0' && str[i]<='9'));
            num=num*10+(str[i]-'0');

    }
    return flag*num;
}
int main()
{
    int num=123876545;
    int num1=-23467;
    char s1[100],s2[100];
    string s=itoa(num,s1);
    string ss="-123764";
    cout<
整数与字符串相互转换_第1张图片
image.png

你可能感兴趣的:(整数与字符串相互转换)