快读
inline int read(){
int x = 0, f = 1;
char ch = getchar();
while(ch < '0' || ch > '9'){
if (ch == '-')
f = -1;
ch = getchar();
}
while(ch >= '0' && ch <= '9'){
x = (x<<1) + (x<<3) + (ch^48);
ch = getchar();
cout<<"ch="<<ch<<endl;
}
return x * f;
}
cin与scanf读字符时的区别:
#include<iostream>
#include<queue>
#include<bits/stdc++.h>
using namespace std;
char a[5];
char b[5];
int main()
{
for(int i=1;i<=4;i++)
{
cin>>a[i];
}
for(int i=1;i<=4;i++)
cout<<a[i]<<endl;
for(int i=1;i<=4;i++)
{
scanf("%c",&b[i]);
}
for(int i=1;i<=4;i++)
cout<<i<<" "<<b[i]<<endl;
return 0;
}
如图,当读入a数组时读入的是'1','空格','2','空格','3','空格','4','回车'。
而cin在开始时会一直读入直到非空白字符,结束时在遇到空白会保留空白字符。
scanf则对空白字符一样读入,所以在后来读入b[1]时先读入的是4后面的回车。