关于c++的通过cin.get()维持黑框的思考

1.前言

由于本科没有学过c语言,研究生阶段接触c++上手有点困难,今天遇到关于通过cin.get()来让黑框维持的原因。

2.思考

cin.get()维持黑框不消失的原因一言蔽之就是等待输入。等待键盘的输入内容并回车(一般是回车)后cin.get()才能结束,然后黑框也随之消失。

2.1 从键盘输入

使用输入操作符读取单词,标准库中提供了iostream,可以使用内置的cin对象,调用重载的输入操作符>>来读取键盘输入。

	string str;
	//  读取键盘输入,遇到空白符停止
	cin >> str;
	cout << str<<endl;

这种方式的特点是:忽略开始的空白符,遇到下一个空白符(空格、回车、制表)等就会停止。所以如果我们输入“hello world”,那么读取给str的只有“hello”:因为hello后面是空格,属于空白符,所以停止。这相当于读取了一个“单词”。
剩下的内容“ world”其实也没有丢,而是保存在了输入流的“输入队列”里。如果我们想读取更多的输入信息,就需要使用更多的string对象来获取:

	string str1, str2;
	cin >> str1 >> str2;
	cout << str1 << str2 << endl;

这样,如果输入“hello world”,就可以输出“helloworld”。虽然空格还在读取hello后的输入流中,但是str2的读取忽略了world之前的空格

接下来看这里的代码

	string str1;
	cin >> str1;
	cout << str1 << endl;
	cin.get();
	cin.get();

运行效果是输入hello后输出hello,同时黑框仍然保持存在,即等待输入
在这里插入图片描述
我们输入的内容是hello,但是我们在hello后有一个回车符,读给str1的内容为hello
这里为什么要写两个cin.get():第一个用来处理之前保留在输入队列的回车符;第二个用来等待下一次输入,让窗口保持开启状态。
接下来继续:
以如下代码为例:

#include<iostream>
using namespace std;
//cin以空白字符串为结束:空格、回车、制表
int main() {
	string str1;
	string str2;
	cin >> str1;
	cout << str1 << endl;
	cin.get();
	cin >> str2;
	cin.get();
	cout << str2 << endl;
	
	cin.get();
	//cin.get();
	//cin.get();
}

在这里插入图片描述
该过程大体如下:

标准库中提供了iostream,使用内置的cin对象,调用重载操作符>>来读取键盘输入。
我们输入hello并回车,此时输入流中就有了:hello和回车符
将hello读取给str1,此时输入流还剩下回车符
第8行代码输出str1的内容
第9行代码中,使用cin.get()获取输入流的内容,读取了回车,返回空行。
第10行代码,继续cin对象重载>>读取键盘输入,并将输入内容给str2
我们输入say加上回车
str2的内容为say,因为say后面是空白符
输入流中还剩下回车
第11行代码使用cin.get()获取输入流中的回车符
第12行代码,输出str2的内容say
第14行代码 cin.get()等待下一次输入,如果不输入内容并回车的话,窗口一直保持

总结一下:

1.空白符:包括空格,回车,制表符等
2.cin>>str是获取键盘输入,遇到空白符停止,将内容给str,剩下的部分仍然在输入流中
3.cin.get()获取输入流中的内容,可以读取空白符
4.cin>>str1>>str2>>str3等此类使用多个str对象,他会忽略开始的空白符,遇到下一个空白符(空格、回车、制表等)就会停止,将该部分中间的内容依次传给str.例如 我们输入 “say hello world” 那么str1就是say,str2就是hello,因为他会忽略hello前的空格和后的空格,同理str3是world,他会忽略world前的空格和后的回车符

拓展:
对于代码

	string str1;
	cin >> str1;
	cout << str1 << endl;
	cin.get();
	cin.get();

如果我们输入的内容是 hello然后空格,然后回车,那么黑框会保持吗?答案是不会的,因为str1存储输入流的hello,第一个cin.get()获取输入流的空白符:空格,返回空行,第二个cin.get()获取输入流的回车符,返回空行,没有cin.get()继续等待输入了
如果写成

	string str1;
	cin >> str1;
	cout << str1 << endl;
	cin.get();
	cin.get();
	cin.get();

则可以保持黑框等待输入

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/655888.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Grafana详解

目录 ​编辑 一、Grafana的主要特点 二、Grafana的基本功能 三、Grafana的使用方法 Grafana是一款开源的数据可视化工具&#xff0c;主要用于大规模指标数据的可视化展现。下面将详细介绍Grafana的特点、功能以及基本使用方法。 一、Grafana的主要特点 跨平台性&#xff…

学习笔记——STM32F103V3版本——HC-05模块控制数码管

一.硬件 1.HC-05模块 2.数码管 3.连接硬件 二.在keil5中的代码 main.c代码&#xff1a; #include "stm32f10x.h" #include "buletooth.h" #include "led.h" #include "sys.h" #include "usart.h" #include "delay.…

【计算机毕业设计】基于SSM+Vue的线上旅行信息管理系统【源码+lw+部署文档】

目录 摘 要 第1章 绪论 1.1背景及意义 1.2 国内外研究概况 1.3 研究的内容 第2章 相关技术 2.1 Java简介 2.2 SSM三大框架 2.3 MyEclipse开发环境 2.4 Tomcat服务器 2.5 MySQL数据库 第3章 系统分析 3.1 需求分析 3.2 系统可行性分析 3.2.1技术可行性&#xff1a;技术背景 …

aws eks集成wasm运行时并启动pod

参考资料 WebAssembly 在云原生中的实践指南&#xff0c;https://cloud.tencent.com/developer/article/2324065 作为一种通用字节码技术&#xff0c;wasm的初衷是在浏览器中的程序实现原生应用性能。高级语言将wasm作为目标语言进行编译并运行在wasm解释器中。和nodejs类似的…

大模型主流 RAG 框架TOP10

节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。 总结链接…

大规模语言模型的书籍分享

在当今人工智能领域&#xff0c;大规模语言模型成为了研究和应用的热点之一。它们以其大规模的参数和强大的性能表现&#xff0c;推动着机器学习和深度学习技术的发展。对于GPT 系列大规模语言模型的发展历程&#xff0c;有两点令人印象深刻。 第一点是可拓展的训练架构与学习范…

2024年国内最全面最前沿人工智能理论和实践资料

引言 【导读】2024第11届全球互联网架构大会圆满结束。会议邀请了100余位行业内的领军人物和革新者&#xff0c;大会通过主题演讲、实践案例分享&#xff0c;以及前瞻性的技术讨论&#xff0c;探索AI技术的边界。 近日&#xff0c;备受瞩目的第十一届全球互联网架构大会&#x…

2024.05.28学习记录

1. 小林coding 计网复习 2.代码随想录刷题. 图论.和复习数组.链表 3.rosebush完成select组件

第十四届蓝桥杯c++研究生组

A 关键思路是求每个十进制数的数字以及怎么在一个数组中让判断所有的数字次数相等。 求每个十进制的数字 while(n!0){int x n%10;//x获取了n的每一个位数字n/10;}扩展&#xff1a;求二进制的每位数字 &#xff08;注意&#xff1a;进制转换、1的个数、位运算&#xff09; x…

单元测试的实现方式

单元测试的实现方式包括&#xff1a;人工静态检查、动态执行跟踪 人工静态检查 人工静态检查是一种单元测试实现方式&#xff0c;它主要依赖开发人员的人工代码审查和静态分析工具来识别潜在的代码问题。 代码审查&#xff1a;开发人员通过仔细检查代码来发现潜在的问题。他…

Warning: Each child in a list should have a unique “key“ prop.

问题描述&#xff1a; 使用ProTable的时候&#xff0c;报错如下 原因分析&#xff1a; 根据报错内容可以分析出&#xff0c;表格数据缺少唯一key&#xff0c; <PaginationTablecolumns{columns}pagination{{pageSize: 10,current: 1,showSizeChanger: true,showQuickJum…

最新!!2024年上半年软考【中级软件设计师】综合知识真题解析

2024上半年软考考试已经结束了&#xff0c;为大家整理了网友回忆版的软件设计师真题及答案&#xff0c;总共30道题。 上半年考试的宝子们可以对答案预估分数&#xff01;准备下半年考的宝子可以提前把握考试知识点和出题方向&#xff0c;说不定会遇到相同考点的题目&#xff01…

rk3568_semaphore

文章目录 前言1 什么是信号量1.1 信号量API函数2、信号量实验2.1 实验目的2.2函数源码2.3 运行结果图前言 本文记录rk3568开发板的信号量实验 1 什么是信号量 信号量是同步的一种方式,常常用于控制对共享资源的访问。 举个例子:停车场的停车位有100个,这100个停车位就是共…

代码模板,Cookie和Session

目录 代码模板 Cookie的基本使用 概念 Cookie的API public Cookie(String name, String value) 发送Cookie对象到客户端&#xff1a;使用response对象 创建Cookie对象并响应给浏览器 在服务器后端获取Cookie对象 Cookie[]cookiesrequset.getCookies(); Cookie的使用细…

牛!华为《Linux 面试笔记大全》太赞了,完整版PDF 开放下载!

在QQ和微信社群中&#xff0c;我注意到许多人都在寻找一份全面的Linux学习资料。因此&#xff0c;我在这里为大家整理和分类了相关的信息&#xff0c;可以看作是对重点内容的梳理和归纳。 这份《Linux面试笔记》主要分为三大部分&#xff1a;基础篇-进阶篇-高级篇 本书笔记针…

Linux主机连接腾讯云服务器详细配置

硬件条件 当然你要先有一个云服务器&#xff0c;腾讯云比阿里云便宜一点&#xff0c;所以就用腾讯云了 问了师兄买这个98的就行&#xff0c;选择CentOS&#xff0c;不要选Ubuntu&#xff0c;因为 嗯&#xff0c;大概就是这样 编程测试 云服务器当然是作为服务端 server.cpp…

蓝桥杯备赛——DP续【python】

一、小明的背包2 试题链接&#xff1a;https://www.lanqiao.cn/problems/1175/learning/ 输入示例 5 20 1 6 2 5 3 8 5 15 3 3 输出示例 120 问题分析 这题是完全背包&#xff0c;每个物品有无数个&#xff0c;所以对于任意dp[i][j]&#xff08;其表示的意思为选到第i个…

18 - grace数据处理 - 补充 - 地下水储量计算过程分解 - 地表水储量变化Glads水文数据处理

18 - grace数据处理 - 补充 - 地下水储量计算过程分解 - 地表水储量变化 0 引言1 Grace陆地水储量过程整合0 引言 由水量平衡方程可以将地下水储量的计算过程分解为3个部分,第一部分计算陆地水储量变化、第二部分计算地表水储量变化、第三部分计算地下水储量变化。本篇简单介绍…

前端Vue小兔鲜儿电商项目实战Day01

一、项目介绍 1. 项目技术栈 2. 项目规模 3. 项目亮点 4. 课程安排 5. 适合人群 二、Vue3组合式API体验 1. 通过一个Counter案例体验Vue3新引入的组合式API ①Vue2的代码 <template><button click"addCount"> {{ count }}</button> </templ…