http://blog.csdn.net/shahdza/article/details/6317011 该帖的改进版本
无返回值,非负整数输入
template <class T>
inline void input(T &ret)
{
char c; ret=0;
while(c=getchar(),c<'0'||c>'9');
while(c>='0'&&c<='9') ret=ret*10+(c-'0'),c=getchar();
}
有返回值,非负整数输入
template <class T>
inline bool is_input(T &ret)
{
char c; ret=0;
while(c=getchar(),c<'0'||c>'9') if(c==EOF) return 0;
while(c>='0'&&c<='9') ret=ret*10+(c-'0'),c=getchar();
return 1;
}
有返回值,整数输入
template <class T>
inline bool is_input(T &ret)
{
char c; int sgn;
while(c=getchar(),c!='-'&&(c<'0'||c>'9')) if(c==EOF) return 0;
sgn=(c=='-')?-1:1; ret=(c=='-')?0:(c-'0');
while(c=getchar(),c>='0'&&c<='9') ret=ret*10+(c-'0');
ret*=sgn;
return 1;
}
有返回值,非负实数输入
template <class T>
inline bool is_input(T &ret)
{
char c; T bit=0.1;
while(c=getchar(),(c<'0'||c>'9')&&c!='.') if(c==EOF) return 0;
ret=c-'0';
while(c=getchar(),c>='0'&&c<='9') ret=ret*10+(c-'0');
if(c!='.') return 1;
while(c=getchar(),c>='0'&&c<='9') ret+=(c-'0')*bit,bit/=10;
return 1;
}
有返回值,实数输入
template <class T>
inline bool is_input(T &ret)
{
char c; int sgn; T bit=0.1;
while(c=getchar(),(c<'0'||c>'9')&&c!='-'&&c!='.') if(c==EOF) return 0;
sgn=(c=='-')?-1:1; ret=(c=='-')?0:(c-'0');
while(c=getchar(),c>='0'&&c<='9') ret=ret*10+(c-'0');
if(c!='.'){ ret*=sgn; return 1; }
while(c=getchar(),c>='0'&&c<='9') ret+=(c-'0')*bit,bit/=10;
ret*=sgn;
return 1;
}
非负整数输出
void out(int x)
{
if(x>9) out(x/10);
putchar(x%10+'0');
}