如题 我写了个 fread fwrite 重载 c++ 输入,但是发现里面有许多类型是重复的比如说 signed short,signed int,signed long,signed long long 以及 unsigned short,unsigned int,unsigned long,unsigned long long,函数一模一样但是我不得不重载很多很多次,这要怎么办
附 code:(还没写输出)
class fastIO{
private:
char ibuf[1000007],*p1=ibuf,*p2=ibuf,obuf[1000007],*p3=obuf,sta[70];
public:
int get(){return p1==p2&&(p2=(p1=ibuf)+fread(ibuf,1,1000007,stdin),p1==p2)?EOF:*p1++;}
void put(char x){p3-obuf<1000007?*p3++=(x):(fwrite(obuf,p3-obuf,1,stdout),p3=obuf,*p3++=(x));}
fastIO &operator>>(bool &t){
t=0;int c=fio.get();
for(;!isdigit(c);c=fio.get());
for(;isdigit(c);c=fio.get())t=t*10+(c^48);
return fio;
}
fastIO &operator>>(unsigned char &t){
for(t=fio.get();isspace(t);t=fio.get());
return fio;
}
fastIO &operator>>(signed char &t){
for(t=fio.get();isspace(t);t=fio.get());
return fio;
}
fastIO &operator>>(signed int &t){
t=0;bool y=0;int c=fio.get();
for(;!isdigit(c);c=fio.get())if(c=='-')y=true;
for(;isdigit(c);c=fio.get())t=t*10+(c^48);
if(y==1){t=-t;}return fio;
}
fastIO &operator>>(unsigned int &t){
t=0;int c=fio.get();
for(;!isdigit(c);c=fio.get());
for(;isdigit(c);c=fio.get())t=t*10+(c^48);
return fio;
}
fastIO &operator>>(signed long &t){
t=0;bool y=0;int c=fio.get();
for(;!isdigit(c);c=fio.get())if(c=='-')y=true;
for(;isdigit(c);c=fio.get())t=t*10+(c^48);
if(y==1){t=-t;}return fio;
}
fastIO &operator>>(unsigned long &t){
t=0;int c=fio.get();
for(;!isdigit(c);c=fio.get());
for(;isdigit(c);c=fio.get())t=t*10+(c^48);
return fio;
}
fastIO &operator>>(signed long long &t){
t=0;bool y=0;int c=fio.get();
for(;!isdigit(c);c=fio.get())if(c=='-')y=true;
for(;isdigit(c);c=fio.get())t=t*10+(c^48);
if(y==1){t=-t;}return fio;
}
fastIO &operator>>(unsigned long long &t){
t=0;int c=fio.get();
for(;!isdigit(c);c=fio.get());
for(;isdigit(c);c=fio.get())t=t*10+(c^48);
return fio;
}
fastIO &operator>>(__int128_t &t){
t=0;bool y=0;int c=fio.get();
for(;!isdigit(c);c=fio.get())if(c=='-')y=true;
for(;isdigit(c);c=fio.get())t=t*10+(c^48);
if(y==1){t=-t;}return fio;
}
fastIO &operator>>(__uint128_t &t){
t=0;int c=fio.get();
for(;!isdigit(c);c=fio.get());
for(;isdigit(c);c=fio.get())t=t*10+(c^48);
return fio;
}
fastIO &operator>>(char *t){
int c=fio.get();
for(;c!='\n';c=fio.get())*t=c,t++;
return fio;
}
template<typename any>fastIO &operator>>(std::basic_string<any> &t){
t.clear();any c=fio.get();
for(;!isspace(c);c=fio.get())t.push_back(c);
return fio;
}
}fio;