首页 > 代码库 > 数据输入输出加速模板

数据输入输出加速模板

 

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‘);}

数据输入输出加速模板