首先贴上一段代码:
<span style="font-size:12px;">#include <iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
using namespace std;
int main()
{
char next;
do{
cin.get(next);
cout<<next;
}while(next!='\n');
return 0;
}
</span>
输入:
To be or not to be
输出:
To be or not to be
其实刚开始我很不理解为什么输出是这个样子的。。。我所认为的是TToo bbee oorr nnoott ttoo bbee
后来看了网上一些说法才理解。。。是自己对cin理解不透彻。。。
因为我们每次输入数据后只有按下回车键才会从缓冲区交给程序处理。
cin.get()用来从终端(键盘)读取一个字符[其实是从缓冲区读取],我们键入很多字符,包括换行符'\n',都是放在缓冲区,按下回车键后才交出去给程序,cin.get(next),无非是把读取的字符赋值给next,通过一个while循环,不停的把读取到的字符给next,并且从缓冲区读取后输出(按下回车键以后),直到遇到'\n'读取'\n'赋值给next后就结束循环,相当于吃掉了很多没有用的字符。