C++问题 关于cin输入流的问题 如何提取cin的缓冲区的内容呢?

有好几个问题请教一下大家拜托了1我每进行一次输入也就是每按下一次enter就更新一次输入流的缓冲区吗?2当我用cin进行输入的时候用户输入了数据cin把数据给了相应的变量... 有好几个问题 请教一下大家 拜托了
1 我每进行一次输入也就是 每按下一次 enter 就更新一次输入流的缓冲区吗?
2 当我用cin进行输入的时候 用户输入了数据 cin把数据给了相应的变量
这时候 缓冲区还存在用户输入的数据吗?
3 怎么提取cin的缓冲区呢?
4 #include <iostream>
using namespace std;
int main()
{
int i,j;
cin > > i;
cin > > j;
cout < < i < < " " < < j < < endl;
return 0;
}
用户输入 "12 78 "(当然是双引号内的内容,不包括双引号)
则系统不要求等待用户输入j的值,直接将78赋值给j.我个人推测:应该是系统提取12赋值给i,再将 " 78 "放入输入缓冲区,因为输入缓冲区中有数据,所以命令行:cin > > j,就直接从输入缓冲区中提取数据.不知是否真的是这样,假如是这样的话,那我可以用什么函数可以获取输入缓冲区中的数据,又怎么才能将中的数据清空,望各位不吝赐教?

谢谢各位 拜托了
展开
 我来答
jsym66
2011-06-14
知道答主
回答量:3
采纳率:0%
帮助的人:0
展开全部
1、按下enter会把之前输入的字符(包括回车符自己)送入到输入缓冲区,但并不会刷新输入流。输入流是C++自己实现的,流的使用也由它管理,C++并没有接收到回车符就刷新输入缓冲流一说。在输入缓冲区的内容被读取完之前(除\r\n等),它不会再提示用户作新的输入,所以表面上看起来,用户回车后它的内容也更新了,其实是它之前的内容已经被读完。
2、不存在了。输入流就像一个先进先出的字节队列,字节被读出后就被丢掉了。
3、向上面那位 Xuxu8511 说的(请见谅),用cin、get、getline、getchar、gets等都能获取输入流的数据,另外,getch、getche等不能获取输入流的数据。
4、cin>>i语句会先检查缓冲区有没有数据,如果没有它会提示用户输入,输入 "12 78” 回车后,这些字符会先送到输入缓冲区,这时缓冲区的内容为 "12 78 \r\n”。之后它会读缓冲区内容,因为i是int型,所以它遇到空格停止读,把12的值赋给i,并删除缓冲区的12。cin>>j也是类似。
Xuxu8511
2011-06-10 · TA获得超过388个赞
知道小有建树答主
回答量:1344
采纳率:0%
帮助的人:772万
展开全部
1、是
2、当然没有了
3、cin没有缓冲区,缓冲区是系统给程序的。
4、问题没有看懂你的,程序IO操作的控制是需要enter键的。cin、get、getline、getchar、gets都能获取输入流的数据。清空用cin类的成员函数clear。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b7a078e
2011-06-10 · 超过45用户采纳过TA的回答
知道小有建树答主
回答量:104
采纳率:0%
帮助的人:74.3万
展开全部
这些缓冲区也是我很疑惑的问题,有的说当缓冲区满或者有强制性输出时才会输出数据,就像有cin语句的时候,不过缓冲区是不会把空格或回车赋给变量的,所以缓冲区中会保留回车符,下次赋值的时候可能会直接赋给变量而不会等待用户按下回车了,要消除缓冲区中的数据用fflush(stdin)就行了,要想得到缓冲区中全部数据我个人认为你可以把它们都传给一个字符串指针,具体的还要调试能通过才行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2020-08-04
展开全部
可以用Windows的API:ReadConsoleInput()
函数原型:BOOL ReadConsoleInput(HANDLE hConsoleInput,PINPUT_RECORD lpBuffer,DWORD nLenth,LPWORD lpNumberOfEventRead)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友75516e3
2011-06-10 · TA获得超过202个赞
知道小有建树答主
回答量:363
采纳率:0%
帮助的人:167万
展开全部
endl缓冲区中数据清空
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式