刚刚入门了c++,本屌还处于新手阶段,个人总结了cin的特点与用法,如果有错误欢迎大家指正
c++中通过cin输入时最常用的一种输入方式之一。cin不是一个函数,而是输入流。标准输入设备(如键盘)一次输入结束后数据会被存入缓冲区,cin从缓冲区中取数据赋值给输入的变量。如果缓冲区中有存留的数据,则cin不会等待输入而直接把缓冲区中残留的数据赋值给变量。
从下面最简单的一个例子说起:
```
int main()
{
char a,b;
cin>>a;
cin>>b;
cout<<a<<" "<<b;
return 0;
}
```
输入为x(enter)y(enter)
输出x y
可见,cin丢弃了第一个回车而把x赋值给了a,缓冲区中没有数据,会继续等待输入。继续输入y(enter),cin从缓冲区中取数据把y赋值给b随后丢弃了回车符,最后输出x y。
同理,如果输入为x y(enter)会得到同样的输出。因为cin先从缓冲区中取数据x赋值给a并丢弃了空格符,由于缓冲区中还存在着y,cin接着取y赋值给b。也就是说先把x赋值给a,再把y赋值给b。
这里有一种特殊情况:
```
int main()
{
char a,b,c;
cin>>a;
cin>>b;
c=getchar();
cout<<a<<b<<c;
return 0;
}
```
输入x y(enter)可以发现最终输出为
xy
输出x y之后又换了一行,可见c接收到了回车,c=回车符。输出c便换行了。
而cin.get(),与cin.getline()/getline()不会丢弃回车符,所以通常在它们后面会加一个getchar()语句来输入缓冲区中的回车符。