最近在使用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()解密的更多相关文章

  1. C# 加密解密文件

    using System; using System.Collections.Generic; using System.Text; using System.Security.Cryptograph ...

  2. 【Agorithm】一次一密加密解密算法

    #include<iostream> #include<cstdio> #include<cstdlib> #include<ctime> #inclu ...

  3. 队列——解密QQ号

    队列——解密QQ号 --转自啊哈磊[坐在马桶上看算法]算法4:队列——解密QQ号 新学期开始了,小哈是小哼的新同桌(小哈是个小美女哦~),小哼向小哈询问QQ号,小哈当然不会直接告诉小哼啦,原因嘛你懂的 ...

  4. CryptoAPI与openssl RSA非对称加密解密(PKCS1 PADDING)交互

    (以下代码中都只做测试用,有些地方没有释放内存...这个自己解决下) 1.RSA非对称的,首先提供一个供测试用的证书和私钥的数据 1)pem格式的证书和私钥(公私钥是对应的)的base64编码 voi ...

  5. 以Crypto++实现RSA加解密二进制数据

    网上一大片讲怎么加解密字符串的,找了大半天也没找到讲加解密二进制数据的,于是自己研究了下,分享给大家. 加解密函数: #include <rsa.h> #include <randp ...

  6. Java加密解密与数字证书的操作

    1 keytool命令总结 一.创建数字证书 交互模式 使用默认的密钥库.keystore(文件夹是c: Documents and Settingusername)和算法(DSA) keytool  ...

  7. java实现的加密解密

    void encode(File enfile, File defile) throws Exception { String Algorithm = "DES"; byte[] ...

  8. DES加密解密算法C++实现

    DES加密算法并不难,是由一些简单的变换得来的,难的是要有足够的耐心.蒟蒻并不想说自己用了多久才把代码写好的. 代码: 我真的太难了QAQ #include<iostream> using ...

  9. PHP的学习--RSA加密解密

    PHP服务端与客户端交互或者提供开放API时,通常需要对敏感的数据进行加密,这时候rsa非对称加密就能派上用处了. 举个通俗易懂的例子,假设我们再登录一个网站,发送账号和密码,请求被拦截了. 密码没加 ...

随机推荐

  1. easyUI+servlet+mysql项目总结

    项目介绍 利用easyUI做前端框架,进行数据展示和用户数据收集 使用servlet做后端的控制层,并调用业务逻辑组件的业务逻辑方法,处理用户请求,根据不同处理结果返回不同的结果到前端 mysql进行 ...

  2. ABP入门教程3 - 解决方案

    点这里进入ABP入门教程目录 创建项目 点这里进入ABP启动模板 如图操作,我们先生成一个基于.NET Core的MPA(多页面应用).点击"Create my project!" ...

  3. 小程序登录解密用户数据encryptedData -41001: encodingAesKey 非法

    问题: 做小程序微信授权登录,先获取code,然后去获取到session_key和open_id,再拿到encryptedData,传到服务器去解密拿到用户信息,但是有时成功,有时返回-41001错误 ...

  4. 渗透测试学习 三十一、MSF

    术语 测试者利用系统程序或服务的漏洞进行攻击的一个过程——渗透攻击(exploit),攻击载荷(payload) 攻击者在目标系统上执行的一段代码,该代码具有反弹链接,创建用户.执行其他系统命令的功能 ...

  5. Linux开发环境搭建三 使用mount -t cifs 挂载windows共享目录方法与问题解决

    转载链接:https://blog.csdn.net/fuyuande/article/details/82915800 嵌入式开发通常是在linux环境下编译,windows下开发,这就需要在lin ...

  6. 关于一道fork生成子进程的题目

    题目如下: pid_t pid1,pid2; pid1=fork(); pid2=fork(); ||pid2<) { printf("Fork Failed\n"); } ...

  7. 队列Queue的实现

    数组实现 package DataStructures.Queues; /** * This implements Queues by using the class Queue. * <p&g ...

  8. private构造器和单例模式

    // hiding/Lunch.java // Demonstrates class access specifiers. Make a class // effectively private wi ...

  9. go语言设计模式之visitor

    这个确实没有调通,也要记录一下 visitor.go package visitor import ( "fmt" "io" "os" ) ...

  10. 【1期】mysql必知必会

    再有人问你为什么MySQL用B+树做索引,就把这篇文章发给她