C++中cin>>a原理
int a;
vector<int>res;
while(cin>>a){
res.push_back(a);
}
给出这段代码
可以输入1 2 3 4 5并以回车结束,从而分5次存入res。
也可以输入 1 2回车3 4 5回车 当然可以这么一直输入,直到输入一个任意字符结束
无while仅仅为cin>>a时,若输入1 2 3 回车 ,此时仅仅存入第一个1。
有个问题:a只是一个变量,不能同时放入5个数据,那么这个数据流到底存在哪,又是怎么依次存入res中的?
猜测为缓冲区有一块专门的地方放这些数据流
查阅:http://c.biancheng.net/view/1325.html后了解:
当用户从键盘输入字符时,它们暂时放置在称为输入缓冲区或键盘缓冲区的内存区域中。当 cin 读取它们时,会自动将它们转换为要存储输入数据的变量的数据类型。
用户在输入数字时要用空格分隔数字。这样 cin 才能知道每个数字的开始和结束位置。
假如定义:
int whole;
float fractional;
int letter;
当:输入5.7 4 b 回车

那么,当有如下这段代码
int a, b;
vector<vector<int> >res;
for (int i = ; i < ; ++i) {
vector<int>tmp;
while (cin >> a) {
tmp.push_back(a);
}
res.push_back(tmp);
}
输入1 2 3 4 s(s赋值给a会将其置为0)后res内只会有一个结果,for循环的第二次及以后while会被自动跳过,原因是a在缓冲区没有擦除,cin>>a后的返回值为0??
这时调用什么??? 能正常二次输入? setwind,fflush,clear,在vs2017内都没用。暂时还没找到办法
当有如下这段代码
vector<int>res;
for (int i = ; i < ; ++i) {
cin >> a;
res.push_back(a);
}
输入:1 2 3 4
结果:res内为1 2
分析:cin>>a向缓冲区写入了1 2 3 4但每次a都是取一个放入res,由于for只设置了2个所以最后res内只有前两个1 2
当有如下这段代码
char a;
int b,c;
for(int i=;i<;++i){
cin>>a>>b>>c;
fun(a,b,c);
}
输入:t 1 2 回车r 2 3
这段代码可以动态实现fun函数的功能即 :通过for循环先处理fun(t,1,2)再处理fun(r,2,3) 这在线性处理多组数据时非常有用
有点乱,找时间重新理一下,第二段代码还有问题待解决,有时间再弄
Reference:http://c.biancheng.net/view/1325.html
C++中cin>>a原理的更多相关文章
- C++中cin、cin.get()、cin.getline()、getline()、gets()等函数的用法----细节决定成败 (sort用法)
C++中cin.cin.get().cin.getline().getline().gets()等函数的用法 学C++的时候,这几个输入函数弄的有点迷糊:这里做个小结,为了自己复习,也希望对后来者能有 ...
- C++中cin、cin.get()、cin.getline()、getline()、gets()等函数的用法
学C++的时候,这几个输入函数弄的有点迷糊:这里做个小结,为了自己复习,也希望对后来者能有所帮助,如果有差错的地方还请各位多多指教(本文所有程序均通过VC 6.0运行) 1.cin 2.cin.get ...
- 广告系统中weak-and算法原理及编码验证
wand(weak and)算法基本思路 一般搜索的query比较短,但如果query比较长,如是一段文本,需要搜索相似的文本,这时候一般就需要wand算法,该算法在广告系统中有比较成熟的应 该,主要 ...
- ABP中动态WebAPI原理解析
ABP中动态WebAPI原理解析 动态WebAPI应该算是ABP中最Magic的功能之一了吧.开发人员无须定义继承自ApiController的类,只须重用Application Service中的类 ...
- Mysql中主从复制的原理、配置过程以及实际案例
Mysql中主从复制的原理.配置过程以及实际案例1.什么是主从复制?原理:主从分离,什么意思呢?我们不妨画个图看看.如图1所示: 2.准备工作:预备两台服务器,我这里使用虚拟机安装了两个Centos6 ...
- JavaScript中new实现原理
JavaScript中new实现原理 1.创建一个空对象 obj 2.将该对象 obj 的原型链 __proto__ 指向构造函数的原型 prototype, 并且在原型链 __proto__ 上设置 ...
- 浅谈范德蒙德(Vandermonde)方阵的逆矩阵的求法以及快速傅里叶变换(FFT)中IDFT的原理
浅谈范德蒙德(Vandermonde)方阵的逆矩阵与拉格朗日(Lagrange)插值的关系以及快速傅里叶变换(FFT)中IDFT的原理 标签: 行列式 矩阵 线性代数 FFT 拉格朗日插值 只要稍微看 ...
- word2vec 中的数学原理三 背景知识 语言模型
主要参考: word2vec 中的数学原理详解 自己动手写 word2vec
- word2vec 中的数学原理二 预备知识 霍夫曼树
主要参考: word2vec 中的数学原理详解 自己动手写 word2vec 编码的话,根是不记录在编码中的 这一篇主要讲的就是霍夫曼树(最优二叉树)和编码. ...
随机推荐
- java实现第七届蓝桥杯圆圈舞
圆圈舞 题目描述 春天温暖的阳光照耀着大地,正是草原上的小动物们最快乐的时候.小动物们在草原上开了一个舞会,欢度这美好的时光. 舞会上最重要的一个环节就是跳圆舞曲,n只小动物手拉手围成一大圈,随着音乐 ...
- 什么!你想要封装好的ajax
ajax作为前端开发领域一个必不可少的内容,也是灵魂所在,今天就ajax的封装给大家做一个分析, 如果没有猜错的话现在基本上用原生去写ajax的意见不多了,这是肯定的 ,为什么这么说,jq的ajax大 ...
- React、Vue添加全局的请求进度条(nprogress)
全局的请求进度条,我们可以使用nprogress来实现,效果如下: 首先需要安装插件: npm i nprogress -S 然后使用的时候主要有两种方式,第一种是切换页面的时候,第二种则是请求接口的 ...
- 数据源管理 | Kafka集群环境搭建,消息存储机制详解
本文源码:GitHub·点这里 || GitEE·点这里 一.Kafka集群环境 1.环境版本 版本:kafka2.11,zookeeper3.4 注意:这里zookeeper3.4也是基于集群模式部 ...
- [xDebug] php下的Debug的调试
基础知识 对于php来说,debug的话,有个东西叫xdebug,当然配置这个时候,特别在mac下出了很多坑,这里强烈推荐一个mac下类似phpstudy的东西,叫做MxSrvs,了解一下? Xdeb ...
- 如何在centos7安装dnf软件包
想在自己的笔记本CentOS7上安装dnf玩玩儿,但是根据百度出来的方法没有成功. yum install epel-release -y yum install dnf 现在将解决办法转载过来,如下 ...
- [noi.ac省选模拟赛]第12场题解集合
题目 比赛界面. T1 数据范围明示直接\(O(n^2)\)计算,问题就在如何快速计算. 树上路径统计通常会用到差分方法.这里有两棵树,因此我们可以做"差分套差分",在 A 树上对 ...
- HashMap源码和并发异常问题分析
要点源码分析 HashMap允许键值对为null:HashTable则不允许,会报空指针异常: HashMap<String, String> map= new HashMap<&g ...
- 解决GITLAB无法启动runsv no running
可以先尝试用 systemctl start gitlab-runsvdir.service 如果冻结不动的话,就需要查看系统服务项了 systemctl -t target 如果系统正常的话,所有任 ...
- 如何用Python从海量文本抽取主题?
摘自https://www.jianshu.com/p/fdde9fc03f94 你在工作.学习中是否曾因信息过载叫苦不迭?有一种方法能够替你读海量文章,并将不同的主题和对应的关键词抽取出来,让你谈笑 ...