C++是一种面向对象的高级程序设计语言,是C语言的超集,在比赛中输入也是多种多样,今天本蒟蒻给各位蒟蒻们 大佬们总结了一下常用的输入。
作为刚学C++第一个学的输入,cin可谓基本万能,不管是string(除句子),char,int,long long,等都可以用cin输入。
#include
using namespace std;
signed main()
{
int n;
long long m;
double k;
char a;
string b;
float c;
cin>>n>>m>>k>>a>>b>>c;
}
1.不能输入空格
2.速度不是很快
3.需要:
#include
using namespace std;
但是,如果是输入一个句子呢?
显然,cin就无能为力了,这时候,就需要getline了。
getline用来专门输入字符串,可以忽略掉空格符,也就是可以输入一个句子
#include
using namespace std;
signed main()
{
string s;
getline(cin,s);
}
1.只能输入字符串
2.输入也不是很快
3.需要:
#include
using namespace std;
比赛中往往会出现输入数据过多的情况,这时候用cin就很可能会TLE,所以我们使用更快的scanf
scanf是最常用的输入方式之一,它和cin一样,可以输入很多类型(非空格),速度也很快。
scanf输入格式:scanf(“%输入类型”,&输入变量名);
输入类型如下:
c 读入域宽指定的数目个字符组成的字符序列(后面不会加上空字节),如果省略宽度则读入单字符。如%c或%1c读入单字符,%2c读入两个字符(后面不会加上空字节),以此类推。
s读入一个的字符序列,后面会加上空字节,遇到空白字符(\t \r \n 空格等)完成读取。
d 读入可选有符号(可选有符号表示输入时可以带符号也可以不带符号,不带符号则视为非负)十进制整数。输入格式应该像strtol函数的base实参为10调用时识别的字符序列一样。
u 读入无符号符号十进制整数。输入格式应该像strtol函数的base实参为10调用时识别的字符序列一样。
i 读入可选有符号整数。输入格式应该像strtol函数的base实参为0调用时识别的字符序列一样。
a,e,f,g,A,E,F,G 读入可选有符号浮点数,输入格式应该像strtod函数识别的字符序列一样。
o 读入可选有符号八进制整数。输入格式应该像strtoul函数的base实参为8调用时识别的字符序列一样。
x,X读入可选有符号十六进制整数。输入格式应该像strtoul函数的base实参为16调用时识别的字符序列一样。
p 读入一个指针值。读入的字符序列应该与fprintf的%p产生的字符序列形式相同。
h与d, i, o, u, x, X, or n配合使用,表示对应一个short int或unsigned short int数据。
l 与d, i, o, u, x, X, or n配合使用,表示对应一个long int或unsigned long int数据;与a, A, e, E, f, F, g, or G配合使用表示对应一个double数据;与c,s,[配合使用表示对应wchar_t数据。
ll与d, i, o, u, x, X, or n配合使用,表示对应一个long long int或unsigned long long int数据。
j与d, i, o, u, x, X, or n配合使用,表示对应一个intmax_t或uintmax_t数据。
z与d, i, o, u, x, X, or n配合使用,表示对应一个size_t数据(或与size_t对应的有符号整型数据)。
t与d, i, o, u, x, X, or n配合使用,表示对应一个ptrdiff_t数据(或与ptrdiff_t对应的无符号整型数据)。
L 与a, A, e, E, f, F, g, or G配合使用,表示对应一个long double数据。
#include
using namespace std;
signed main()
{
int n;
long long m;
double k;
scanf("%d%lld%lf",&n,&m,&k);
}
1.不要对应错输入类型
2. % 和 & 不要打错
3.需要:
#include
可有时数据还是太大了,用scanf都有点慢,只能使用read(快速读入)了。
read是getchar()的一种应用,特点是快,准,稳。
速度very very very的快
inline void read(int& x)
{
x=0;
char c;
for(c=getchar();c<'0'||c>'9';c=getchar());
for(;c>='0'&&c<='9';c =getchar())
x=(x<<3)+(x<<1)+c-'0';
}
read(n);
你想有吗