您的位置:首页 > 编程语言 > C语言/C++

编程练习------C/C++分别实现字符串与整数的转换

2014-05-06 15:52 471 查看

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\n",i);
printf("itoa: %s\n",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<<"\nitoa: "<<s<<endl;
}
运行结果如下图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐