Chinaunix首页 | 论坛 | 博客
  • 博客访问: 8608895
  • 博文数量: 1413
  • 博客积分: 11128
  • 博客等级: 上将
  • 技术积分: 14685
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-13 10:03
个人简介

follow my heart...

文章分类

全部博文(1413)

文章存档

2013年(1)

2012年(5)

2011年(45)

2010年(176)

2009年(148)

2008年(190)

2007年(293)

2006年(555)

分类: C/C++

2009-03-16 22:56:02

C语言实现了许多有趣的函数,而其它语言又在此之上进行了封装.c语言在许多方面可以做一些底层操作--尤其是指针,指供了灵活而又强大的方法.
这个atoi函数没有考虑过多其它问题:如正负号问题以及越界等问题,只是实现最基本的转换.

#include <iostream>
#include <typeinfo>
using namespace std;
int alpha2num(const char *str)
{
        int total = 0;
        char c;
        while(c = *str++)
        {
                if(isdigit(c))
                        total = total * 10 + (c - '0');
        }
        return total;
}
int main()
{
        char str_test[] = "345";
        int num = alpha2num("1 2abc3");
        cout << alpha2num(str_test) << endl;
        cout << num << endl;
        cout << typeid(num).name() << endl;
}

测式的num对应的字符串中包括了空格以及字母,这些都会在转换过程中去除.typeid可以测试一个变量的类型.最后的输出结果是:
345
123
i

阅读(4094) | 评论(3) | 转发(0) |
给主人留下些什么吧!~~

gehaoaini2009-12-21 15:03:22

C++编的,不是 C 啊?

chinaunix网友2009-03-26 19:34:13

atoi好像失败就返回0

cuichaox2009-03-18 08:39:27

和标准库的atoi不一样, C标准库的ato i碰到非数字字符就跳出了,只转换前面的数字部分。atoi("1 2abc3")的结果为'1'.