@lychee123
2017-09-16T08:46:24.000000Z
字数 2186
阅读 1420
外挂
#include<bits/stdc++.h>struct FastIO{static const int S = 1310720;int wpos;char wbuf[S], endofFile;FastIO() : wpos(0), endofFile(0) {}inline int xchar(){if(endofFile) exit(0);static char buf[S];static int len = 0, pos = 0;if(pos == len)pos = 0, len = fread(buf, 1, S, stdin);if(pos == len){endofFile = 1;return '\n';}return buf[pos ++];}inline unsigned long long xuint()//输入正整数{int c = xchar();unsigned long long x = 0;while(c <= 32)c = xchar();for(; '0' <= c && c <= '9'; c = xchar())x = x * 10 + c - '0';return x;}inline long long xint()//输入整数{long long s = 1;int c = xchar(), x = 0;while(c <= 32)c = xchar();if(c == '-')s = -1, c = xchar();for(; '0' <= c && c <= '9'; c = xchar())x = x * 10 + c - '0';return x * s;}inline void xstring(char *s)//输入字符串{int c = xchar();while(c <= 32)c = xchar();for(; c > 32; c = xchar())* s++ = c;*s = 0;}inline double xdouble()//输入double数据{bool sign = 0;char ch = xchar();double x = 0;while(ch <= 32)ch = xchar();if(ch == '-')sign = 1, ch = xchar();for(; '0' <= ch && ch <= '9'; ch = xchar())x = x * 10 + ch - '0';if(ch == '.'){double tmp = 1;ch = xchar();for(; ch >= '0' && ch <= '9'; ch = xchar())tmp /= 10.0, x += tmp * (ch - '0');}if(sign)x = -x;return x;}inline void wchar(int x)//输出char型{if(wpos == S)fwrite(wbuf, 1, S, stdout), wpos = 0;wbuf[wpos ++] = x;}inline void wint(long long x)//输出int型{if(x < 0)wchar('-'), x = -x;char s[24];int n = 0;while(x || !n)s[n ++] = '0' + x % 10, x /= 10;while(n--)wchar(s[n]);}inline void wstring(const char *s)//输出字符串{while(*s)wchar(*s++);}inline void wdouble(double x, int y = 6)//输出double数本身,精度{static long long mul[] = {1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000, 10000000000LL, 100000000000LL, 1000000000000LL, 10000000000000LL, 100000000000000LL, 1000000000000000LL, 10000000000000000LL, 100000000000000000LL};if(x < -1e-12)wchar('-'), x = -x;x *= mul[y];long long x1 = (long long) floorl(x);if(x - floor(x) >= 0.5)++x1;long long x2 = x1 / mul[y], x3 = x1 - x2 * mul[y];wint(x2);if(y > 0){wchar('.');for(size_t i = 1; i < y && x3 * mul[i] < mul[y]; wchar('0'), ++i);wint(x3);}}~FastIO(){if(wpos)fwrite(wbuf, 1, wpos, stdout), wpos = 0;}} io;
用法
//放在头文件下面//输入int x;x=io.xuint();char s;s=io.xchar();//输出io.wint(x);io.wchar(s);io.wchar('\n');//输出换行string str[100];io.xstring(str);//输入字符串io.wstring(str);//输出字符串double d = io.xdouble();//输入doubleio.wdouble(d, 8);//输出double,保留8位小数
注意:
输出double的时候,要保证输出的值的整数部分的位数+保留精度的位数小于18位。
读入到文件结束会马上中断程序运行
使用此模板后,不能再使用scanf或者cin。但是依然可以使用print和cout。但是如果调用了io的写函数,print和cout也不能再使用了。