C/C++輸入輸出優化(快讀)
阿新 • • 發佈:2020-09-01
提供string和所有數字型別的輸入輸出
其中輸入方式每樣提供兩種
讀入char[]可以使用strcpy(char[],string::c_str())的方式來解決
inline string reads()//相當於cin { string s=""; char c=getchar(); for(;c==' '||c=='\n'||c=='\r';c=getchar()); for(;c!=' '&&c!='\n'&&c!='\r'&&c!=EOF;c=getchar())s+=c; return s; } inline void reads(string &s){s=reads();} inline string readln()//相當於getline { string s=""; char c=getchar(); for(;c=='\n'||c=='\r';c=getchar()); for(;c!='\n'&&c!='\r'&&c!=EOF;c=getchar())s+=c; return s; } inline void readln(string &s){s=readln();} //這個沒測試過,理論上會快一點吧 inline void prints(string &s){for(char c:s)putchar(c);} #define isdigit(x) ((x)>='0'&&(x)<='9') //用法 變數=read<型別名>(); template<class T> inline T read() { T x=0,f=1; char c=getchar(); for(;!isdigit(c);c=getchar())f=(x=='-'?-1:1); for(;isdigit(c);c=getchar())x=(x<<3)+(x<<1)+(c&15); return x; } //純數字讀入,用法read(變數); template<class T>inline void read(T &x){x=read<T>();} //純數字輸出 template<class T> inline void print(T x) { if(x<0){putchar('-');x=-x;} if(x>9)print(x/10); putchar((x%10)|48); }