C/C++输入输出优化(快读)

提供string和所有数字类型的输入输出
其中输入方式每样提供两种
读入char[]可以使用

char s[100];
strcpy(s,reads().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);
}
posted @ 2020-09-01 11:36  dreaming2019  阅读(282)  评论(0)    收藏  举报