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

闲来无事,玩玩基本之基本!c/c++之 string或者char*转换为double的 atof !

2009-03-20 22:32 337 查看
最近没什么事,看看atof这个基本函数的用处,当然,它的功能是把字符串转换为数字!

可是,你们仔细试过这个要被转换的字符串有什么要求吗?。

只要细心的人肯定会有大发现。如下

cout << atof("1.3") << endl;


还得,在那么下面呢

cout << atof(".1") << endl;


对,结果意料之中:0.1

这行代码会输出什么:很简单 1.3

cout << atof("1.3#?!") << endl;


这一行呢:大概加估计1.3吧,不错确实是1.3

好让我们在掐面插入几个空格看

cout << atof("  1.3#?!") << endl;


哎呀,没想到还是1.3

cout << atof("#?!") << endl;


这一行呢:这下糊涂了,这样不会出错吗?我告诉你,不会,因为atof有容错处理

它会首先判断在你要转换的字符串里面能不能找到数字.找不到,则返回0.

cout << atof("1.3.3.6") << endl;


那么这一行呢:我想有点悟性的人,肯定会回答1.3,不错你答得非常对!就是1.3

好了,这里您看出点什么苗头没?

好,试试下面,看看你错了没

cout << atof("#1.3.3.6") << endl;


你的结果是什么,我想你不会是写1.3吧,这下我告诉你结果是0.

好了,我们可以得出结论了

atof的基本实现算法是

第一步先去掉参数开始的连续多余空格,不管有多少个。

第二步

先看接收的参数第一个是不是数字或小数点,若不是,不找了,返回

0;是再往下查找,找到数字,取出来,找第一个".",取出来,而后找到不是数字就

的第一个字符就停了

在将取出来的字串以小数点为分界,分别进行处理。之后再返回结果!

怎么样 atof够用吧。

这个用途可以派上什么用场,自个遐想吧!

估计是这样吧,不知道对不对。

本人以上纯属没事乱想,请不要真以为atof就是按照上面的方法实现的! 其实我也不敢肯定!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: