如何将字符串转换为数字
如下所示:
1,“123”——>123;
2,“123.555”——>123.555;
如何用一个函数同时实现上面的两种情况?
我知道atoi只能完成第1种情况,atof只能完成第2种情况,
[解决办法]
遍历字符串,然后if 判断
[解决办法]
float value;
const char* str = "123.55";
sscanf(str,"%f",&value);
说实话我觉得你不必纠结value最后到底是不是整数,如果你预期可能会溢出那么就用double。最后是不是整数只是取决于你要怎么使用它而已。反正信息是没丢失的。
[解决办法]
先用if判断再用函数
[解决办法]
main()
{
char *a="12345.111111";
double ad=0.0;
int ai=0;
int i;
int j=0;
for(i=0;i<strlen(a);i++)
{
if(a[i]=='.')
{
printf("%f\n",atof(a));
j++;
break;
}
}
if(j==0)
{
printf("%d\n",atoi(a));
}
}
char *a="你自己写个数" ,然后装进去,编译,运行,就可以看到结果。
[解决办法]
果断sscanf
[解决办法]
int i = type_convert<int>("123");
double j = type_convert<double>("123.555");
template<class Out_Type, class In_Type>
Out_Type type_convert(const In_Type& T)
{
stringstream ss;
ss<<T;
Out_Type result;
ss>>result;
return result;
}
char s1[]="123";
char s2[]="123.555";
double d1,d2;
sscanf(s1,"%lf",&d1);
sscanf(s2,"%lf",&d2);
printf("%lg\n%lg\n",d1,d2);