C中字符串转化为实数的一些函数

http://c.biancheng.net/cpp/html/128.html

大致有strtof()、atoi()、atol()、atof()、strtod()、strtol()、strtoul();

当然反过来有atoi();或者利用sprintf 或是sscanf

strtod()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,到出现非数字或字符串结束时('\0')才结束转换,并将结果返回。若endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr传回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分。如123.456或123e-2。
//字符串转化为长整型 
strtol(str,&endptr,radix);//str:字符串或字符数组的首地址,string类型要通过加.c_str()转化为char类型; 
                          //&endptr:传递第一个非法字符的地址给endptr;
						  //radix:进制数,以十进制表示 
//字符串转化为双精度浮点型 
strtod(str,&endptr); //str:字符串或字符数组的首地址;
                     //&endptr:传递第一个非法字符的地址给endptr
//字符串转化为整型
atoi(str);
//字符串转化为浮点型
atof(str); 



#include<iostream>
#include<cstdlib>
#include<string>
using namespace std;
int main(){
	char *endptr;
	char a[]="12345.6789";
	char b[] = "1234.567qwer";
	char c[] = "-232.23e4";
	char d[] = "123456789.124";
	
	string s1="12345.6789";
	string s2="1234.567qwer";
	string s3="-232.23e4";
	
	printf( "a=%lf\n", strtod(a,NULL) );
    printf( "b=%lf\n", strtod(b,&endptr) );
    printf( "endptr=%s\n", endptr );
    printf( "c=%lf\n", strtod(c,NULL) );
    
    printf( "a=%lf\n", strtod(s1.c_str(),NULL) );
    printf( "b=%lf\n", strtod(s2.c_str(),&endptr) );
    printf( "endptr=%s\n", endptr );
    printf( "c=%lf\n", strtod(s3.c_str(),NULL) );
    
    printf( "a=%ld\n", strtol(a,&endptr,10) );
    
    printf( "a=%lu\n", strtoul(c,&endptr,10) );
    
    printf( "a=%f\n", strtof(a,&endptr) );
    
    printf( "a=%d\n", atoi(a));
    printf( "a=%d\n", atoi(c));
    printf( "a=%d\n", atoi(d));
    
    printf( "a=%ld\n", atol(a));
    printf( "a=%ld\n", atol(c));
    printf( "a=%ld\n", atol(d));
    
    printf( "a=%f\n", atof(a));
    printf( "a=%f\n", atof(s1.c_str()));
}


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值