```
int qread(){
int w=1,c,ret;
while((c=getchar())> '9'||c< '0')
w=(c=='-'?-1:1); ret=c-'0';
while((c=getchar())>='0'&&c<='9')
ret=ret*10+c-'0';
return ret*w;
}
```
快读的原理大概就是直接读取字符然后组装……
by 离散小波变换° @ 2020-02-24 23:19:54
$IO$全家桶$qwq$
```cpp
//IO
#define pc(s) putchar(s)
#define say(s) cout<<s<<endl
namespace io
{
const int SIZ=55;int que[SIZ],op,qr;char ch;
template<class I>
il void gi(I &w)
{
ch=getchar(),op=1,w=0;
while(!isdigit(ch)){if(ch=='-') op=-1;ch=getchar();}
while(isdigit(ch)){w=w*10+ch-'0';ch=getchar();}w*=op;
}
template<typename T,typename... Args>
il void gi(T& t,Args&... args){gi(t);gi(args...);}
template<class I>
il void print(I w)
{
qr=0;if(!w) putchar('0');if(w<0) putchar('-'),w=-w;
while(w) que[++qr]=w%10+'0',w/=10;
while(qr) putchar(que[qr--]);
}
}
using io::gi;
using io::print;
```
by MikukuOvO @ 2020-02-24 23:22:05
@[慕蓉樱雪](/user/234074) fread似乎更快一点qwq
```cpp
#define endfile fclose(stdin);fclose(stdout);
namespace IO{
char buf[1<<15],*S,*T;
inline char gc(){
if (S==T){
T=(S=buf)+fread(buf,1,1<<15,stdin);
if(S==T)return EOF;
}return *S++;
}
inline int read(){
reg int x;reg bool f;reg char c;
for (f=0; (c=gc())<'0'||c>'9'; f=c=='-');
for (x=c^'0'; (c=gc())>='0'&&c<='9'; x=(x<<3)+(x<<1)+(c^'0'));
return f?-x:x;
}
const int _outlim=1<<20;
char outbuf[_outlim+5];int cnt;
inline void pc(char c){
outbuf[cnt++]=c;
if (cnt==_outlim)
fwrite(outbuf,1,cnt,stdout),cnt=0;
}
inline void write(int x){
if(x>9)write(x/10);pc(x%10^'0');
}
inline void end(){
if(cnt)fwrite(outbuf,1,cnt,stdout);endfile;
}
}
```
by Marser @ 2020-02-24 23:22:50
```
const int SIZ =1e5;
char bef[SIZ+3],*p1=NULL,*p2=NULL;
char getc(){
if(p1==p2) p1=bef,p2=bef+fread(bef,1,SIZ,stdin);
return p1==p2?EOF:*p1++;
}
int qread(){
int w=1,c,ret;
while((c=getc())> '9'||c< '0')
w=(c=='-'?-1:1); ret=c-'0';
while((c=getc())>='0'&&c<='9')
ret=ret*10+c-'0';
return ret*w;
}
char readc(){
char c; while((c=getc())==' '||c=='\n'||c=='\r'); return c;
}
int readln(char *s){
int len=0,c; while((c=getc())==10||c==13);
if(c==EOF) return -1;
s[len++]=c; while((c=getc())!=10&&c!=13&&c!=EOF)
s[len++]=c; s[len]=0; return len;
}
int reads(char *s){
int len=0,c; while((c=getc())==10||c==13||c==32);
if(c==EOF) return -1;
s[len++]=c; while((c=getc())!=10&&c!=13&&c!=32&&c!=EOF)
s[len++]=c; s[len]=0; return len;
}
```
`fread`快读+字符串读入全家桶
by 离散小波变换° @ 2020-02-24 23:23:16
怎么一个比一个长
by Marser @ 2020-02-24 23:23:21
@[Marser](/user/17930) ~~因为一个比一个的桶大呀(雾~~
by 离散小波变换° @ 2020-02-24 23:24:07
```cpp
#include<cstdio>
#include<cctype>
#define gc (l==r&&(r=(l=c)+fread(c,1,1<<21,stdin),l==r)?EOF:*l++)
char c[1<<21],*l=c,*r=c;
inline int read() {
int x=0; char ch=gc;
while (!isdigit(ch)) ch=gc;
while (isdigit(ch)) x=x*10+(ch^48),ch=gc;
return x;
}
```
by Celestial_Scarlet @ 2020-02-24 23:27:05
只支持读入int型非负数(
需求不同的话请自行修改(
by Celestial_Scarlet @ 2020-02-24 23:27:59
@[慕蓉樱雪](/user/234074)
```cpp
#define read(x) cin>>x
#define print(x) cout<<x;
```
狗头(
by Retired_lvmao @ 2020-02-24 23:29:07
有double的吗。。。
by 樱雪喵 @ 2020-02-24 23:30:29