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;
}

运行结果如下图:

最新文章

  1. 利用奇异值分解(SVD)简化数据
  2. AI (Adobe Illustrator)详细用法(三)
  3. 查找问题的利器 - Git Bisect
  4. 百度ue富文本编辑器setContent方法报错初始化加载内容失败解决办法
  5. 【转】 IOS中定时器NSTimer的开启与关闭
  6. OC1_协议语句
  7. 1671. Anansi&#39;s Cobweb(并查集)
  8. PHP简单socket编程
  9. 使用JQUERY操作Radio
  10. Mongoose与bluebird结合使用实例
  11. UITextField总结
  12. gitlab markdown支持页面内跳转
  13. npm run dev的错误
  14. ​《数据库系统概念》1-数据抽象、模型及SQL
  15. 使用php分页类实现简单分类
  16. 浅谈压缩感知(十四):傅里叶矩阵与小波变换矩阵的MATLAB实现
  17. [javaSE] 集合框架(共性方法)
  18. CSS链接的样式a:link,a:visited,a:hover,a:active
  19. C# .net 使用正则表达式去掉字符串中的数字
  20. js 图片查看器

热门文章

  1. (四)Jquery Mobile表单
  2. Eclipse perl的IDE环境插件-EPIC
  3. LPC1788的EMC驱动norflash
  4. Keil STM32调试,使用ST-Link下载程序时提示“flash timeout.reset the target and try it again”
  5. STM32-USB详细使用说明(转)
  6. 浅谈一个网页打开的全过程(涉及DNS、CDN、Nginx负载均衡等)
  7. 解决eclipse报PermGen space异常的问题
  8. nginx 判断访问文件或目录不存在rewrite
  9. JAVA-Unit01: 数据库原理 、 SQL(DDL、DML)
  10. Oracle数据库常用技术