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‘); }
时间: 2024-12-17 22:17:12