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非对称加密就能派上用处了. 举个通俗易懂的例子,假设我们再登录一个网站,发送账号和密码,请求被拦截了. 密码没加 ...
随机推荐
- [20191115]oracle实例占用内存计算.txt
[20191115]oracle实例占用内存计算.txt --//以前学习oracle数据库时,总想了解实例占用内存多少,我曾经在一些会议底下问过一位高手,对方说计算这个相对很难,许多东西是共享的.- ...
- 流程控制之if,while,for
流程控制之if,while,for 一.if语法 就一个条件 age_of_girl = 18 if age_of_girl < 25: print("小姐姐") 两个条件 ...
- 2. Linux-3.14.12内存管理笔记【系统启动阶段的memblock算法(2)】
memory:表示可用可分配的内存: 结束完memblock算法初始化前的准备工作,回到memblock算法初始化及其算法实现上面.memblock是一个很简单的算法. memblock算法的实现是, ...
- docker 网络设置概述
docker有3种网络: 使用命令docker network ls,执行结果如下. NETWORK ID NAME DRIVER SCOPE 82e8822065c7 bridge bridge l ...
- [Go] go等待读取最后一行的数据内容
这段代码是参照慕课网的视频教程,主要是f.Seek(0, os.SEEK_END)移动到末尾,但是里面有个小问题,当打开的文件被重新清空内容的清空下,就再也不能到读取数据了,比如在开启读取后 echo ...
- bootrom/spl/uboot/linux逐级加载是如何实现的?
关键词:bootrom.spl.uboot.linux.mksheader.sb_header.mkimage.image_header_t等等. 首先看一个典型的bootrom->spl-&g ...
- Redux API
Redux API Redux的API非常少.Redux定义了一系列的约定(contract),同时提供少量辅助函数来把这些约定整合到一起. Redux只关心如何管理state.在实际的项目中 ...
- Builder模式的演示
Builder模式的演示 package com.mozq.mb.mb01.pojo; /* 类的某些参数给出了默认值,但是一旦设置了就不可变.使用Builder模式来创建. */ public cl ...
- HTML连载49-清除浮动的第三种方式(内外墙法)
一.清除浮动的第三种方式 1.隔墙法有两种如下:外墙法和内墙法. 2.外墙法 (1)在两个盒子中间添加一个额外的块级元素 (2)给这个额外添加的块级元素设置:clear:both;属性 注意点: ...
- 用keras构建自己的网络层 TensorFlow2.0教程
1.构建一个简单的网络层 from __future__ import absolute_import, division, print_function import tensorflow as t ...