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;
    }
    运行结果如下图:



  • 相关阅读:
    TestComplete 14 百度网盘下载
    appium 安装
    python 操作yaml文件
    Linux 性能检测常用的10个基本命令
    清除浮动的几种方式及优缺点总结
    css居中布局的几种方式
    css的优先级权重
    移动端1px的边框
    Nuxt.js入门学习
    vue-cli3 中console.log报错
  • 原文地址:https://www.cnblogs.com/fengty90/p/3768839.html
Copyright © 2011-2022 走看看