zoukankan      html  css  js  c++  java
  • 编程练习------C/C++分别实现字符串与整数的转换

    C/C++分别实现字符串与整数的转换

    前提:不使用 itoa 和 atoi。 

    方法一.C和C++通用的一种转换手段是:

    1、整数转化为字符串:采用加‘0’,再逆序的办法,整数加‘0’就会隐性转化成char类型的数字。

    2、字符串转化为整数:采用减‘0’的办法,字符串减‘0’就会隐性转化成int类型的数。

    代码如下:

    /* C实现数字转字符串、字符串转数字 */
    #include<stdio.h>
    
    char string[7];	/*全局变量,用于存放整数转为char*/
    char* itoa_test(int num)
    {
    	int i = 0, j = 0;
    	char temp[7];
    	while(num)
    	{
    		temp[i] = num%10 + '0';	/* 整数加0隐性转化为char类型 */
    		i++;
    		num /= 10;
    	}
    
    	i--;
    	while(i>=0)	/* 将字符串逆序 */
    	{
    		string[j] = temp[i];
    		i--;
    		j++;
    	}
    	string[j] = 0;
    	return string;
    }
    
    int atoi_test(char* str)
    {
    	int i = 0, j = 0, sum = 0;
    	while(*str != 0)
    	{
    		sum = sum*10 + ((*str) - '0');	/* 字符串减0会隐性转化为int类型 */
    		str++;
    	}
    	return sum;
    }
    
    int main()
    {
    	char str[] = "1314";
    	int num = 520;
    	int i = atoi_test(str);
    	char *s = itoa_test(num);
    	printf("atoi: %d
    ",i);
    	printf("itoa: %s
    ",s);
    }
    测试结果如下图:



    方法二.使用C++中的字符串流实现:

    stringstream对象的一个常见用法就是,需要在多种数据类型之间实现自动格式化时使用该类型。

    代码如下:

    #include<iostream>
    #include<sstream>
    #include<string>
    using namespace std;
    
    string test_itoa(int num)
    {
    	ostringstream ostr;
    	ostr << num;
    	return ostr.str();
    }
    
    int test_atoi(string str)
    {
    	istringstream istr(str);
    	int num;
    	istr >> num;
    	return num;
    }
    
    int main()
    {
    	string str = "520";
    	int num = 1314;
    	int i = test_atoi(str);
    	string s = test_itoa(num);
    	cout<<"atoi: "<<i<<"
    itoa: "<<s<<endl;
    }
    运行结果如下图:



  • 相关阅读:
    PAT B1027 打印沙漏 (20 分)
    PAT B1025 反转链表 (25 分)
    PAT B1022 D进制的A+B (20 分)
    PAT B1018 锤子剪刀布 (20 分)
    PAT B1017 A除以B (20 分)
    PAT B1015 德才论 (25 分)
    PAT B1013 数素数 (20 分)
    PAT B1010 一元多项式求导 (25 分)
    HDU 1405 The Last Practice
    HDU 1165 Eddy's research II
  • 原文地址:https://www.cnblogs.com/fengty90/p/3768839.html
Copyright © 2011-2022 走看看