cin.get()解密
最近在使用cin.get()函数时遇到了一个迷惑行为,现已解开。
一、cin.get()的用法
char ch;
ch = cin.get(); //第1种用法
cin.get(ch); //第2种用法
二、迷惑行为解密
当你前面调用过cin获取输入时,调用cin.get()函数不会等你等你在屏幕上手动再输入一个字符,而是直接读取 你上一次调用cin进行输入时的 最后一个回车字符。
下面来看一下两份不同的代码和运行结果,两份代码的区别仅仅在第13行。
void test() {
char ch;
int todo = ;
cout << "请输入字符:";
cin.get(ch); //前面未调用过cin,会在屏幕等待你输入
cout << "输入字符为:" << ch << endl << endl;
cout << "输入1继续,输入0结束:";
cin >> todo;
while (todo) {
cout << "请输入字符:";
//cin.get();
cin.get(ch); //前面调用过cin,此时不会等待你在屏幕上输入,而是直接读取上一次调用cin最后输入的回车给ch
cout << "输入字符为:" << ch << endl << endl;
cout << "输入1继续,输入0结束:";
cin >> todo;
}
}
正常情况下相邻两次循环输出结果的间隔仅为一个空行,但是从第2次循环开始间隔为两个空行,这是因为第14行代码读取了换行符并在下一行输出。

void test() {
char ch;
int todo = ;
cout << "请输入字符:";
cin.get(ch); //前面未调用过cin,会在屏幕等待你输入
cout << "输入字符为:" << ch << endl << endl;
cout << "输入1继续,输入0结束:";
cin >> todo;
while (todo) {
cout << "请输入字符:";
cin.get(); //前面调用过cin,先用cin.get()吃掉上一次调用cin最后输入的回车
cin.get(ch); //此时可以正常输入字符给ch
cout << "输入字符为:" << ch << endl << endl;
cout << "输入1继续,输入0结束:";
cin >> todo;
}
}
相邻两次循环输出结果的间隔仅为一个空行。

cin.get()解密的更多相关文章
- C# 加密解密文件
using System; using System.Collections.Generic; using System.Text; using System.Security.Cryptograph ...
- 【Agorithm】一次一密加密解密算法
#include<iostream> #include<cstdio> #include<cstdlib> #include<ctime> #inclu ...
- 队列——解密QQ号
队列——解密QQ号 --转自啊哈磊[坐在马桶上看算法]算法4:队列——解密QQ号 新学期开始了,小哈是小哼的新同桌(小哈是个小美女哦~),小哼向小哈询问QQ号,小哈当然不会直接告诉小哼啦,原因嘛你懂的 ...
- CryptoAPI与openssl RSA非对称加密解密(PKCS1 PADDING)交互
(以下代码中都只做测试用,有些地方没有释放内存...这个自己解决下) 1.RSA非对称的,首先提供一个供测试用的证书和私钥的数据 1)pem格式的证书和私钥(公私钥是对应的)的base64编码 voi ...
- 以Crypto++实现RSA加解密二进制数据
网上一大片讲怎么加解密字符串的,找了大半天也没找到讲加解密二进制数据的,于是自己研究了下,分享给大家. 加解密函数: #include <rsa.h> #include <randp ...
- Java加密解密与数字证书的操作
1 keytool命令总结 一.创建数字证书 交互模式 使用默认的密钥库.keystore(文件夹是c: Documents and Settingusername)和算法(DSA) keytool ...
- java实现的加密解密
void encode(File enfile, File defile) throws Exception { String Algorithm = "DES"; byte[] ...
- DES加密解密算法C++实现
DES加密算法并不难,是由一些简单的变换得来的,难的是要有足够的耐心.蒟蒻并不想说自己用了多久才把代码写好的. 代码: 我真的太难了QAQ #include<iostream> using ...
- PHP的学习--RSA加密解密
PHP服务端与客户端交互或者提供开放API时,通常需要对敏感的数据进行加密,这时候rsa非对称加密就能派上用处了. 举个通俗易懂的例子,假设我们再登录一个网站,发送账号和密码,请求被拦截了. 密码没加 ...
随机推荐
- easyUI+servlet+mysql项目总结
项目介绍 利用easyUI做前端框架,进行数据展示和用户数据收集 使用servlet做后端的控制层,并调用业务逻辑组件的业务逻辑方法,处理用户请求,根据不同处理结果返回不同的结果到前端 mysql进行 ...
- ABP入门教程3 - 解决方案
点这里进入ABP入门教程目录 创建项目 点这里进入ABP启动模板 如图操作,我们先生成一个基于.NET Core的MPA(多页面应用).点击"Create my project!" ...
- 小程序登录解密用户数据encryptedData -41001: encodingAesKey 非法
问题: 做小程序微信授权登录,先获取code,然后去获取到session_key和open_id,再拿到encryptedData,传到服务器去解密拿到用户信息,但是有时成功,有时返回-41001错误 ...
- 渗透测试学习 三十一、MSF
术语 测试者利用系统程序或服务的漏洞进行攻击的一个过程——渗透攻击(exploit),攻击载荷(payload) 攻击者在目标系统上执行的一段代码,该代码具有反弹链接,创建用户.执行其他系统命令的功能 ...
- Linux开发环境搭建三 使用mount -t cifs 挂载windows共享目录方法与问题解决
转载链接:https://blog.csdn.net/fuyuande/article/details/82915800 嵌入式开发通常是在linux环境下编译,windows下开发,这就需要在lin ...
- 关于一道fork生成子进程的题目
题目如下: pid_t pid1,pid2; pid1=fork(); pid2=fork(); ||pid2<) { printf("Fork Failed\n"); } ...
- 队列Queue的实现
数组实现 package DataStructures.Queues; /** * This implements Queues by using the class Queue. * <p&g ...
- private构造器和单例模式
// hiding/Lunch.java // Demonstrates class access specifiers. Make a class // effectively private wi ...
- go语言设计模式之visitor
这个确实没有调通,也要记录一下 visitor.go package visitor import ( "fmt" "io" "os" ) ...
- 【1期】mysql必知必会
再有人问你为什么MySQL用B+树做索引,就把这篇文章发给她