/**************************************************************/
// 输入“-123” 输出 -123 正数没有符号,负数有符号,假设所有字符串的值没有超过int的表示范围
/*********************************************************************/
#include<iostream>
#include<string>
#include<cstring>
#include<stdexcept>
#include<sstream>
using namespace std;
{int flag=0,//标示正负数
v=0,
len=0,//不包括负号
sum=0;
if(p!=NULL)
{ if(*p=='-')
{flag=1;
++p;
}
len=strlen(p);
for(int i=0;i<len;++i)//遍历字符串
{ if(*(p+i)==48)
continue;
else
{ v=*(p+i)-48;
for(int j=len-i;j>1;--j)
v=v*10;
sum+=v;
}
}
return flag? -1*sum:sum;
}
else
throw runtime_error("输入非法无法转换");
}
{ int v=0;
string s=p;
istringstream in(s);
in>>v;
return v;
}
int main(void)
{ const char*a="2442";
cout<<f(a)<<endl;
cout<<f_(a)<<endl;
return 0;
}
// 输入“-123” 输出 -123 正数没有符号,负数有符号,假设所有字符串的值没有超过int的表示范围
/*********************************************************************/
#include<iostream>
#include<string>
#include<cstring>
#include<stdexcept>
#include<sstream>
using namespace std;
// 方法1
int f(const char*p){int flag=0,//标示正负数
v=0,
len=0,//不包括负号
sum=0;
if(p!=NULL)
{ if(*p=='-')
{flag=1;
++p;
}
len=strlen(p);
for(int i=0;i<len;++i)//遍历字符串
{ if(*(p+i)==48)
continue;
else
{ v=*(p+i)-48;
for(int j=len-i;j>1;--j)
v=v*10;
sum+=v;
}
}
return flag? -1*sum:sum;
}
else
throw runtime_error("输入非法无法转换");
}
//方法2
int f_(const char*p)//没有进行p的安全检测{ int v=0;
string s=p;
istringstream in(s);
in>>v;
return v;
}
int main(void)
{ const char*a="2442";
cout<<f(a)<<endl;
cout<<f_(a)<<endl;
return 0;
}