【答疑释惑】C++ cin的问题

Java中的高精度数字语音版

---------------------------------------------------------------

输入原理:

程序的输入都建有一个缓冲区,即输入缓冲区。一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据。正因为cin函数是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,cin函数会直接取得这些残留数据而不会请求键盘输入。

//cin读取:

//①忽略开头whitespace字符

//②碰到第一个非whitespace字符,如果是正确类型则读取并继续;

// 如果是非正确类型,则结束读取并call setstate(ios_base::failbit);

//③如果读取到正确类型字符,碰到其他字符(包括whitespace)则结束读取;

如上图显示,遇到1.1时,首先读取1,然后读取到“.”时返回继续循环执行,这时.1留在缓冲区。继续读取时,从"."开始读取出错,退出循环,所以最后结果为3.

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-07-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IT可乐

JVM 运行时的内存分配

  首先我们必须要知道的是 Java 是跨平台的。而它之所以跨平台就是因为 JVM 不是跨平台的。JVM 建立了 Java 程序和操作系统之间的桥梁,JVM 是...

2008
来自专栏xcywt

关于delete 和 new

关于new和delete,有如下代码 // new_test.cpp #include<iostream> using namespace std; cl...

2006
来自专栏IT技术精选文摘

深入浅出Java 10的实验性JIT编译器Graal

1575
来自专栏Java学习网

java开发中代码级别的优化方法总结,有效提高程序性能

负载测试和应用程序监控对于确定应用程序的一些关键性能瓶颈非常有用。但同时,我们需要遵循良好的编码习惯,以避免在对应用程序进行监控的时候出现过多的性能问题。

952
来自专栏互联网杂技

堆,栈,内存泄露,内存溢出介绍

简单的可以理解为: heap(堆):是由malloc之类函数分配的空间所在地。地址是由低向高增长的。 stack(栈):是自动分配变量,以及函数调用的时候所使用...

3744
来自专栏腾讯NEXT学位

JavaScript引擎分析

? 一.JavaScript简介 JavaScript是一种动态类型的脚本语言;在1995年时,由Netscape公司的Brendan Eich,在网景导航者...

2692
来自专栏代码GG之家

android MVVM开发模式(五)

android MVVM开发模式(五) 上一讲我们说了@InverseBindingAdapter标记的事情。通过这个,我们可以实现view向数据方向的传递。从...

2086
来自专栏醉梦轩

Python和JavaScript中的生成器与协程

Python和JavaScript中都有生成器(Generator)和协程(coroutine)的概念。本文通过分析两者在这两种语言上的使用案例,来对比它们的差...

2202
来自专栏Ryan Miao

YAML 语法

YAML 语法 来源:yaml 这个页面提供一个正确的 YAML 语法的基本概述, 它被用来描述一个 playbooks(我们的配置管理语言). 我们使用 YA...

3619
来自专栏宋凯伦的技术小栈

分享调用Java private方法

上周在修复bug时,发现Java类中某方法是private,且类中没有用到,第一感觉是方法多余。其实通过分析,发现原来Native Code会通过JNI调到此方...

2035

扫码关注云+社区