cin c语言中文网,c++ cin详解
参考地址:http://www.cnblogs.com/A-Song/archive/2012/01/29/2331204.html
程序的输入都建有一个缓冲区,即输入缓冲区。一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据。正因为cin函数是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,cin函数会直接取得这些残留数据而不会请求键盘输入
#1:
#include
using namespace std;
int main()
{
char str[8];
cin.getline(str, 5);
cout<
cin.getline(str, 5);
cout<
return 0;
}
测试:
abcdefgh (回车)
abcd (输出)
(输出-换行)
【分析】之所以第一次输入完后直接程序就结束了,而不是进行第二次输入,是因为第一次多输入的数据还残留在缓存区中,第二次输入就直接从缓存区中提取而不会请求键盘输入,以下探讨几种常见的输入方式:
一. cin>>
该操作符是根据后面变量的类型读取数据。
输入结束条件 :遇到Enter、Space、Tab键。
对结束符的处理 :丢弃缓冲区中使得输入结束的结束符(Enter、Space、Tab)
#2:
#include
using namespace std;
int main()
{
char str1[10], str2[10];
cin>>str1;
cin>>str2;
cout<
cout<
return 0;
}
测试:
abcd efgh
输出:
abcd
efgh
【分析】第一次读取字符串时遇到空格则停止了,将abcd读入str1,并舍弃了空格,将后面的字符串给了第二个字符串。这证明了cin读入数据遇到空格结束;并且丢弃空格符;缓冲区有残留数据,读入操作直接从缓冲区中取数据。
二.cin.get(数组名,长度,结束符)
其中结束符为可选参数,读入的字符个数最多为(长度-1)个,结束符规定结束字符串读取的字符,默认为ENTER
若要读取字符,直接cin.get(char ch)或ch=cin.get()即可
读取字符的情况:
输入结束条件:Enter键
对结束符处理:不丢弃缓冲区中的Enter
cin.get() 与 cin.get(char ch)用于读取字符,他们的使用是相似的,
即:ch=cin.get() 与 cin.get(ch)是等价的。
#3:
#include
using namespace std;
int main()
{
char c1, c2;
cin.get(c1);
cin.get(c2);
cout<
cout<
return 0;
}
测试一输入:
a[Enter]
输出:
a
97 10
【分析】会发现只执行了一次从键盘输入,显然第一个字符变量取的’a', 第二个变量取的是Enter(ASCII值为10),这是因为该函数不丢弃上次输入结束时的Enter字符,所以第一次输入结束时缓冲区中残留的是上次输入结束时的Enter字符!
测试二输入:
a b[Enter]
输出:
a
97 32
【分析】显然第一个字符变量取的’a', 第二个变量取的是Space(ASCII值为32)。原因同上,没有丢弃Space字符。
读取字符串的情况:
输入结束条件:默认Enter键(因此可接受空格,Tab键),可在第三个参数上自定义结束符
对结束符处理:丢弃缓冲区中的Enter
#4:
#include
using namespace std;
int main ()
{
char ch, a[20];
cin.get(a, 5 , 'd');
cin>>ch;
cout<
cout<
return 0;
}
测试一输入:
12345[Enter]
输出:
1234
53
【分析】第一次输入超长,字符串按长度取了"1234",而’5′仍残留在缓冲区中,所以第二次输入字符没有从键盘读入,而是直接取了’5′,所以打印的ASCII值是53(’5′的ASCII值)。
测试二输入:
12d45[Enter]
输出:
12
d
【分析】第二次输出为d,说明自定义结束符时不丢弃缓冲区中的结束符
三.cin.getline()
cin.getline(数组名,长度,结束符) 大体与 cin.get(数组名,长度,结束符)类似。
区别在于:
cin.get()当输入的字符串超长时,不会引起cin函数的错误,后面的cin操作会继续执行,只是直接从缓冲区中取数据。但是cin.getline()当输入超长时,会引起cin函数的错误,后面的cin操作将不再执行。
#5:
#include
using namespace std;
int main ()
{
char ch, a[20];
cin.getline(a, 5);
cin>>ch;
cout<
cin c语言中文网,c++ cin详解相关推荐
- C语言return的用法详解,C语言函数返回值详解。 (本次转载仅供学习,感谢原创!!转发自C语言中文网,如有侵权请私信本人删除)
C语言return的用法详解,C语言函数返回值详解 转载:http://c.biancheng.net/view/1855.html 函数的返回值是指函数被调用之后,执行函数体中的代码所得到的结果,这 ...
- 嵌入式c语言为什么变量定义在前面,嵌入式C语言数据类型和变量详解
原标题:嵌入式C语言数据类型和变量详解 一般来讲,标准的C语言类型在嵌入式编译器中是合法的.但由于嵌入式控制器的受限环境.嵌入式c语言的变量和数据类型具有新的特征,这些特征体现在如下方面. 嵌入式C语 ...
- 用数据结构c语言写成绩排序,C语言数据结构 快速排序实例详解
C语言数据结构 快速排序实例详解 一.快速排序简介 快速排序采用分治的思想,第一趟先将一串数字分为两部分,第一部分的数值都比第二部分要小,然后按照这种方法,依次对两边的数据进行排序. 二.代码实现 # ...
- C语言解决约瑟夫问题详解的代码
C语言解决约瑟夫问题详解的代码 参考文章: (1)C语言解决约瑟夫问题详解的代码 (2)https://www.cnblogs.com/odsxe/p/10791049.html (3)https:/ ...
- c语言中快排函数,c语言快排函数详解
c语言快排函数详解 int cmp(const void *a, const void *b) 返回正数就是说 cmp 传入参数第一个要放在第二个后面, 负数就是传入参数第一个要放第二个前面, 如果是 ...
- c语言printf函数中的格式控制字符串,C++_C语言格式化输入输出函数详解,一:格式输出函数printf()
1 - phpStudy...
C语言格式化输入输出函数详解 一:格式输出函数printf() 1.调用形式一般为:printf("格式化控制字符串",输出表列): 2.格式化控制字符串用于指定输出格式,它有三种 ...
- C语言:JSON格式详解
C语言:JSON格式详解 C语言:cJSON库用法详解 C语言:使用cJSON库构造JSON C语言:使用cJSON库解析JSON字符串 JSON 简介 JSON全称 JavaScript Objec ...
- c语言 is函数,关于C语言回调函数的详解~
原标题:关于C语言回调函数的详解~ 01 什么是回调函数? 回调函数,光听名字就比普通函数要高大上一些,那到底什么是回调函数呢?恕我读得书少,没有在那本书上看到关于回调函数的定义.我在百度上搜了一下, ...
- java文档注释定界符_c语言的注释定界符详解
c语言的注释定界符详解 c语言的注释定界符是什么 1.最早期的C语言注释是:/* */ 2.后来又增加的行注释:// 其中/**/是多行注释,//是单行注释. 需要注意的是:C 语言的注释并不是可以出 ...
最新文章
- 中文详解phpmailer所有对象和属性
- Linux终端的几个常用快捷方式,记下!
- codeforces MUH and Cube Walls
- UVA12412 A Typical Homework (a.k.a Shi Xiong Bang Bang Mang)
- 【Linux学习笔记】用nc实现两台主机间的文件传输(不需要输密码)
- 【洛谷p1464】 Function
- php 检查数据库查询结果,php数据库连接、查询、显示结果的小例子
- 【渝粤教育】广东开放大学 计算机组成原理 形成性考核 (21)
- 51job导出的简历是php,前程无忧简历导出
- boost format使用详解
- 使用Docker安装Redis并设置自启动
- 虚拟机ping通主机步骤_6在购买虚拟主机服务之前,请按照操作步骤进行操作
- 模拟器和平精英连接服务器没有响应,和平精英模拟器卡顿解决方法一览
- linksys 打印软件_Linksys固件DD-WRT BitTorrent优化
- linux清理命令及常用命令
- #深入分析# pandas中使用 drop 和 del删除列数据的区别
- 为什么互联网巨头热衷“年终盘点”?
- 人工智能有哪些好书值得推荐?
- 最新java开发工具_2019 最新 Java 开发工具教程,都在这了
- 魔兽怀旧服服务器怎么修改,《魔兽世界怀旧服》转服功能怎么用 转服功能使用方法教程...