1、cin:
输入操作的原理,程序的输入都建有一个缓冲区,即输入缓冲区。一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据。正因为cin函数是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,cin函数会直接取得这些残留数据而不会请求键盘输入,这就是例子中为什么会出现输入语句失效的原因!
cin输入结束的条件:Enter、Space、Tab。cin对这些结束符的处理:丢弃缓冲区中这些字符。与cin.get()不同。
案例1:
#include <iostream>
using namespace std;
int main()
{
int m, n;
cin >> m;
cin >> n;
cout << m << n << endl;
return 0;
}
测试正常输入:
测试异常输入:
案例2:string的输入
void main()
{ string str1;
cin >> str1; //遇到空格的地方就停止字符串的读取输入
cout << str1 << endl;
cin.get();
getline(cin, str1);
cout << str1 << endl;
}
测试:
可以看出cin是遇到“空格”就停止读取输入,并且cin是从第一个“非空格字符”开始读取;
而getline则是直接从第一个字符开始读取(无论是不是空格,都要读入),并且getline是遇到“回车”停止读入;
当把上述代码中 的cin.get()去掉,则输入“123”----》回车 后,getline直接读取“回车”,运行完毕!
案例3: