标准输入的摘要

1. 标准输入

一般来说,我们写程序时候的标准输入,是这样的:

cin>>n;

但是这样太慢了。
所以我们需要格式化输入:

ios::sync_with_stdio(false);
cin>>n;

或者

scanf("%d",n);

但是,因为计算机程序语言调用的是内存临时存储,即使格式化输入,但是仍然速度很慢。

所以,有没有办法??

2. 函数输入

首先,我们需要调用硬盘数据:

int main()
{
	int n;
	freopen("114514.in","r",stdin);
	cin.tie(0),cout.tie(0);
	ios::sync_with_stdio(false);
	cin>>n;
	......
	return 0;
}

然后,我们再自己编一个函数程序:

int read()
{
	int x=0,y=1;
	char c=getchar();
	while(c<'0'||c>'9'){
		if(c=='-') y*=-1;
		c=getchar();
	}
	while(c>='0'&&c<='9'){
		x=(x<<3)+(x<<1)+(c^'0');//其实就是 x=x*10+c-'0';
		c=getchar();
	}
	return x*y;
}

于是,完整程序就是这样的

#include <bits/stdc++.h>
using namespace std;
......
int read()
{
	int x=0,y=1;
	char c=getchar();
	while(c<'0'||c>'9'){
		if(c=='-') y*=-1;
		c=getchar();
	}
	while(c>='0'&&c<='9'){
		x=(x<<3)+(x<<1)+(c^'0');
		c=getchar();
	}
	return x*y;
}
int main()
{
	int n;
	freopen("114514.in","r",stdin);
	cin.tie(0),cout.tie(0);
	ios::sync_with_stdio(false);
	n=read();
	for(int i=1;i<=n;i++){
		......=read();
		......
	}
	......
	return 0;
}
posted @ 2022-11-05 13:00  fyder黯然  阅读(63)  评论(0编辑  收藏  举报