闲来无事,玩玩基本之基本!c/c++之 string或者char*转换为double的 atof !
2009-03-20 22:32
337 查看
最近没什么事,看看atof这个基本函数的用处,当然,它的功能是把字符串转换为数字!
可是,你们仔细试过这个要被转换的字符串有什么要求吗?。
只要细心的人肯定会有大发现。如下
还得,在那么下面呢
对,结果意料之中:0.1
这行代码会输出什么:很简单 1.3
这一行呢:大概加估计1.3吧,不错确实是1.3
好让我们在掐面插入几个空格看
哎呀,没想到还是1.3
这一行呢:这下糊涂了,这样不会出错吗?我告诉你,不会,因为atof有容错处理
它会首先判断在你要转换的字符串里面能不能找到数字.找不到,则返回0.
那么这一行呢:我想有点悟性的人,肯定会回答1.3,不错你答得非常对!就是1.3
好了,这里您看出点什么苗头没?
好,试试下面,看看你错了没
你的结果是什么,我想你不会是写1.3吧,这下我告诉你结果是0.
好了,我们可以得出结论了
atof的基本实现算法是
第一步先去掉参数开始的连续多余空格,不管有多少个。
第二步
先看接收的参数第一个是不是数字或小数点,若不是,不找了,返回
0;是再往下查找,找到数字,取出来,找第一个".",取出来,而后找到不是数字就
的第一个字符就停了
在将取出来的字串以小数点为分界,分别进行处理。之后再返回结果!
怎么样 atof够用吧。
这个用途可以派上什么用场,自个遐想吧!
估计是这样吧,不知道对不对。
本人以上纯属没事乱想,请不要真以为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就是按照上面的方法实现的! 其实我也不敢肯定!
相关文章推荐
- C++ 类型转换 atoi atol atof <stdlib.h>, itoa ftoa char <---> string
- c++中的一些类型转换 : CString,string,int ,long,double,char*,const char*,date
- c++中的一些类型转换 : CString,string,int ,long,double,char*,const char*,date等----留着备用
- c++中的一些类型转换 : CString,string,int ,long,double,char*,const char*,date等
- C++中string,char,int,double等数据类型的相互转换及与ASCII码的转换
- 关于C和C++中的基本数据类型int、long、long long、float、double、char、string的大小及表示范围
- 关于C和C++中的基本数据类型int、long、long long、float、double、char、string的大小及表示范围
- C++ int与string或者char*之间的转换总结
- c++把string(或char) 转换成int(或double)
- c++中的一些类型转换 : CString,string,int ,long,double,char*,const char*,date等 .
- c++中的一些类型转换 : CString,string,int ,long,double,char*,const char*,date等
- C++中将string类型转换为int, float, double类型 主要通过以下几种方式:
- MFC/C++/C中字符类型CString, int, string, char*之间的转换
- c++中int ,char ,string,cstring转换
- C++ wstring string char* wchar_t相互转换
- VS2013 MFC C++ CString ,const char , char, string 类型转换
- c++中int double 与char,string之间的转换
- C++中char*,String,int,CString间转换
- MFC/C++/C中字符类型CString, int, string, char*之间的转换
- 【C++】char* 、string、LPCSTR转换