刚才看到有人说微软笔试题:怎样只用4行代码编写出一个从字符串到长整形的转换函数?
其实用递归只要一行就行了,我的函数如下:
#i nclude <iostream>
using namespace std;
long str2long(char* p,long xxx=0L)
{
return *p=='{content}'?xxx:str2long(p,xxx*10+*p+++0-'0');
}
int main()
{
char *str="123456789",*p=str;
cout<<str2long(p);
getchar();
return 0;
}
——刚才忘了还要考虑负数的情形,应该如下:
#i nclude <iostream>
using namespace std;
long str2long(char* p,long xxx=0L,bool IsPositive=true)
{
return *p=='{content}'?(IsPositive?xxx:xxx*(-1)):(*p=='-'?str2long(++p,0L,false):str2long(p,xxx*10+*p+++0-'0',IsPositive));
}
int main()
{
char *str="-123456789",*p=str;
cout<<str2long(p);
getchar();
return 0;
} <script language="JavaScript" type="text/javascript"> document.write('
本文地址为: ' + window.location.href +''); document.close(); </script>
本文地址为: http://www.mbsxx.cn/view.php?tid=13&id=475
其实用递归只要一行就行了,我的函数如下:
#i nclude <iostream>
using namespace std;
long str2long(char* p,long xxx=0L)
{
return *p=='{content}'?xxx:str2long(p,xxx*10+*p+++0-'0');
}
int main()
{
char *str="123456789",*p=str;
cout<<str2long(p);
getchar();
return 0;
}
——刚才忘了还要考虑负数的情形,应该如下:
#i nclude <iostream>
using namespace std;
long str2long(char* p,long xxx=0L,bool IsPositive=true)
{
return *p=='{content}'?(IsPositive?xxx:xxx*(-1)):(*p=='-'?str2long(++p,0L,false):str2long(p,xxx*10+*p+++0-'0',IsPositive));
}
int main()
{
char *str="-123456789",*p=str;
cout<<str2long(p);
getchar();
return 0;
} <script language="JavaScript" type="text/javascript"> document.write('
本文地址为: ' + window.location.href +''); document.close(); </script>
本文地址为: http://www.mbsxx.cn/view.php?tid=13&id=475