【答疑释惑】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 条评论
登录 后参与评论

相关文章

来自专栏Java技术分享

Redis常用命令整理

        *    匹配任意个(包括0个)字符

2059
来自专栏技术碎碎念

sql server 触发器

触发器是一种特殊类型的存储过程。触发器可包含复杂的T-SQL语句。触发器不能通过名称被直接调用,也不允许设置参数。它是建立在触发事件上的。 触发器可以强制执行一...

3718
来自专栏PHP技术

mysqli_stmt::get_result 方法的替代方案

作者:西瓜玩偶(racnil070512 at hotmail dot com) 我们都知道,在mysqli库中,通过 mysqli_stmt::execut...

32412
来自专栏aCloudDeveloper

C++基础题

刚在网上转看到几道对于巩固基础很有帮助的C++基础题,反正闲着也是闲着,就做了下,具体题型如下: 答案是我自己写,不一定对,如果有朋友看到不对的,欢迎指正,万分...

1885
来自专栏Java技术分享

Redis常用命令整理

doc 环境下使用命令:     keys 命令         ?    匹配一个字符         *    匹配任意个(包括0个)字符         ...

2047
来自专栏coding

python的多进程与多fork

1053
来自专栏我的博客

Shell基础知识

1.变量首个字符必须为字母或者下划线,变量赋值等号前后不能有空格 2.可以用${hello}来表示取出变量hello的值 3.let “var+23″可以执...

2583
来自专栏女程序员的日常

M41T11-RTC(实时时钟)

一、理论准备 1. 主要器件:STM8单片机、M41T11时钟IC、32.768kHz晶振等。 2. 外围设备:烧录工具ST-Link/v2、串口、5v供电SA...

1881
来自专栏技术博文

ls按时间排序输出文件列表

ls按时间排序输出文件列表 首先,ls --help查看ls相关的与时间排序相关的参数: > ls --help|grep -E "time|sort" 如果不...

3186
来自专栏流媒体

C语言文件读写方法

size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );

722

扫码关注云+社区