cin.get()解密
2019-10-28 06:19:15来源:博客园 阅读 ()
cin.get()解密
最近在使用cin.get()函数时遇到了一个迷惑行为,现已解开。
一、cin.get()的用法
char ch; ch = cin.get(); //第1种用法 cin.get(ch); //第2种用法
二、迷惑行为解密
当你前面调用过cin获取输入时,调用cin.get()函数不会等你等你在屏幕上手动再输入一个字符,而是直接读取 你上一次调用cin进行输入时的 最后一个回车字符。
下面来看一下两份不同的代码和运行结果,两份代码的区别仅仅在第13行。
1 void test() { 2 char ch; 3 int todo = 1; 4 5 cout << "请输入字符:"; 6 cin.get(ch); //前面未调用过cin,会在屏幕等待你输入 7 cout << "输入字符为:" << ch << endl << endl; 8 9 cout << "输入1继续,输入0结束:"; 10 cin >> todo; 11 while (todo) { 12 cout << "请输入字符:"; 13 //cin.get(); 14 cin.get(ch); //前面调用过cin,此时不会等待你在屏幕上输入,而是直接读取上一次调用cin最后输入的回车给ch 15 cout << "输入字符为:" << ch << endl << endl; 16 17 cout << "输入1继续,输入0结束:"; 18 cin >> todo; 19 } 20 }
正常情况下相邻两次循环输出结果的间隔仅为一个空行,但是从第2次循环开始间隔为两个空行,这是因为第14行代码读取了换行符并在下一行输出。
1 void test() { 2 char ch; 3 int todo = 1; 4 5 cout << "请输入字符:"; 6 cin.get(ch); //前面未调用过cin,会在屏幕等待你输入 7 cout << "输入字符为:" << ch << endl << endl; 8 9 cout << "输入1继续,输入0结束:"; 10 cin >> todo; 11 while (todo) { 12 cout << "请输入字符:"; 13 cin.get(); //前面调用过cin,先用cin.get()吃掉上一次调用cin最后输入的回车 14 cin.get(ch); //此时可以正常输入字符给ch 15 cout << "输入字符为:" << ch << endl << endl; 16 17 cout << "输入1继续,输入0结束:"; 18 cin >> todo; 19 } 20 }
相邻两次循环输出结果的间隔仅为一个空行。
原文链接:https://www.cnblogs.com/-zyq/p/11741926.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Crypto++ AES 加密解密流程 2018-09-01
- 3DES加解密 C语言 2018-06-18
- 用openssl库RSA加密解密 2018-06-18
- 关于SSIS中解密数据库字符串的方法 2018-06-18
- c# 解密微信encryptedData字段 2018-06-18
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash