整数与字符串相互转换

《程序员面试宝典》 第十四章 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<n;i++)
    {
        assert((str[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<<s<<endl;
    cout<<atoi(s)-1<<endl;
    cout<<atoi(ss)<<endl;
    cout<<itoa(num,s1)<<endl;
    cout<<itoa(num1,s2)<<endl;
    return 0;
}
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第1章 第一个C程序第2章 C语言基础第3章 变量和数据类型第4章 顺序结构程序设计第5章 条件结构程序设计第6章...
    小狮子365阅读 10,773评论 3 71
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,457评论 0 2
  • 留守儿童的教育问题一直被关注,话题不断,面对自己身边的实例,想对家有留守学龄期儿童的父母们说一声:别让“愧疚式溺...
    逗妈妈阅读 639评论 0 0
  • meta 基础知识: h5 页面窗口自动调整到设备的宽度,并禁止用户缩放页面 忽略将页面中的数字识别为电话号码 忽...
    Joah_l阅读 279评论 1 4
  • 昨天微信上有人加我,我一看来源是搜素手机号,就通过了。 通过以后,美女发来信息问:十一月三十拍的写真什么时候能拿到...
    写作的技巧阅读 248评论 0 0