1. 程式人生 > 實用技巧 >C/C++輸入輸出優化(快讀)

C/C++輸入輸出優化(快讀)

提供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);
}