关于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();
则可以保持黑框等待输入
相关文章:
关于c++的通过cin.get()维持黑框的思考
1.前言 由于本科没有学过c语言,研究生阶段接触c上手有点困难,今天遇到关于通过cin.get()来让黑框维持的原因。 2.思考 cin.get()维持黑框不消失的原因一言蔽之就是等待输入。等待键盘的输入内容并回车(一般是回车)后cin.get()才…...
fastadmin接口输出图片 自动拼接网站URL
先自定义常量 1.文件接口路径 修改核心文件 application\common\controller\Api.php/*** 构造方法* access public* param Request $request Request 对象*/public function __construct(Request $request null){$this->request is_null($request) ? Request::instance…...
VMware Workstation 不可恢复错误:(vmui) 错误代码0xc0000094
软件版本 vmware 17 错误情况 VMware Workstation 不可恢复错误:(vmui) Exception 0xc0000094 has occurred. 问题原因 VMware升级到17.0后,将虚拟机环境的【硬件兼容性】升级至Workstation 17.X后,无法修改设备参数。 解决办法 打开需…...
DockerNetwork
Docker Network Docker Network 是 Docker 引擎提供的一种功能,用于管理 Docker 容器之间以及容器与外部网络之间的网络通信。它允许用户定义和配置容器的网络环境,以便容器之间可以相互通信,并与外部网络进行连接。 Docker Network 提供了以…...
QT学习(20):QStyle类
Qt包含一组QStyle子类,这些子类(QWindowsStyle,QMacStyle等)模拟Qt支持的不同平台的样式,默认情况下,这些样式内置在Qt GUI模块中,样式也可以作为插件提供。 Qt的内置widgets使用QStyle来执行几…...
hadoop学习之MapReduce案例:输出每个班级中的成绩前三名的学生
hadoop学习之MapReduce案例:输出每个班级中的成绩前三名的学生 所要处理的数据案例: 1500100001 施笑槐,22,女,文科六班,406 1500100002 吕金鹏,24,男,文科六班,440 1500100003 单乐蕊,22,女,理科六班,359 1500100004 葛德曜,24,男,理科三班,421 15001…...
【亲测,安卓版】快速将网页网址打包成安卓app,一键将网页打包成app,免安装纯绿色版本,快速将网页网址打包成安卓apk
背景:部分客户需求将自己网站打包成app,供用户在浏览器安装使用、 网页网址快速生成app 准备材料操作流程第一步:打开HBuilder X新建项目第二步创建Wap2App项目第三步修改App图标第四步发布app第五步查看apk 准备材料 1.需要打包的网页 2.ap…...
学习thinkphp的循环标签
1.FOREACH标签 foreach标签的用法和PHP语法非常接近,用于循环输出数组或者对象的属性,用法如下: $list User::all(); View::assign(list,$list); 模板文件中可以这样输出 {foreach $list as $key>$vo } {$vo.id}:{$vo.name} {/foreac…...
根据标签名递归读取xml字符串中element
工具类: /*** 根据标签名递归读取xml字符串中element* 例:* String xml * "<req>\n" * "<tag1></tag1>\n" * "<tag2>\n" * " <tag4></tag4>\n" * "</tag2>\n&…...
Ovid医学库文献如何在家查找下载
今天讲的数据库是一个知名医学库——Ovid Ovid隶属于威科集团的健康出版事业集团,与LWW、Adis等公司属于姊妹公司。Ovid数据库在医学外文文献数据库方面占据绝对地位,目前已有包涵人文、科技等多领域数据库300个,其中80多个是生物医学数据库…...
在已创建的git工程中添加.gitignore
有些代码创建git时,为了方便将所有文件都加入了git管理,但实际有些库的Makefile文件和编译目录的文件不需要加入管理,否则每次提交或编译后,git diff将看到非常多的冗余信息。而我们修改的核心代码都淹没在这些大量无用的信息里面…...
MR混合现实情景实训教学系统在临床医学课堂上的应用
MR混合现实情景实训教学系统在临床医学课堂上的应用可以带来许多积极的影响,具体表现在以下几个方面: 1. 增强教学的真实感和互动性:MR混合现实技术能够创建出高度逼真的模拟临床环境,使学生能够身临其境地体验临床实践。这种技术…...
就说说开一家公司的流程和成本
本人在进互联网公司和外企前,也和一位老板合作做,在一家小微公司里做过技术负责人,所以也了解开办一家公司的流程以及公司运作的成本。 通过本文大家其实能看到创业的难度。具体来讲,开办并维持着一家公司,其实需要操…...
【前端】面试八股文——数组扁平化的实现
【前端】面试八股文——数组扁平化的实现 数组扁平化是指将一个多维数组转换为一维数组。在前端开发中,处理这样的数组结构是很常见的需求。本文将详细介绍几种实现数组扁平化的方法,以帮助读者更好地理解和应用这些技术。 1. 使用 Array.prototype.fl…...
2005-2022年各省全体居民人均可支配收入数据(无缺失)
2005-2022年各省全体居民人均可支配收入数据(无缺失) 1、时间:2005-2022年 2、来源:国家统计局、统计年鉴 3、指标:全体居民人均可支配收入 4、范围:31省 5、缺失情况:无缺失 6、指标解释…...
JVM调优,何时调优,怎么调优,面试的时候调优
一般Java面试的时候,面试官都喜欢问一个面试题,就是JVM调优的面试题,相信超过99%的小伙伴都没有过JVM调优的经历。说实话,我以前也没有相关的调优经验,也非常喜欢百度,这个问题到底想问什么,应该…...
朗之万动力学(Langevin dynamics)
朗之万动力学(Langevin dynamics) 是一种模拟经典粒子运动的方法,常用于物理、化学和材料科学等领域。它是由法国物理学家保罗朗之万(Paul Langevin)于1908年提出的,用于描述布朗运动,即微小粒…...
双指针技巧,链表
双指针链表 虚拟头节点双指针,都要用虚拟1头节点 合并两个有序链表 设置双指针,都指向虚拟头节点 ListNode list1 代表的是头节点 class Solution {public ListNode mergeTwoLists(ListNode list1, ListNode list2) {ListNode dummynew ListNode(-1…...
鸿蒙 DevEcoStudio:发布进度条通知
使用notificationManager及wantAgent实现功能import notificationManager from ohos.notificationManager import wantAgent from ohos.app.ability.wantAgent Entry Component struct Index {State message: string 发布进度条通知progressValue: number0async publicDownloa…...
web前端之vue动态访问静态资源、静态资源的动态访问、打包、public、import、URL、Vite
MENU 静态资源与打包规则动态访问静态资源直接导入将静态资存放在public目录中动态导入URL构造函数结束语实践与坑附文 静态资源与打包规则 介绍 Vite脚手架在打包代码的时候,会把源代码里对于静态资源的访问路径转换为打包后静态资源文件的路径。主要的区别是文件指…...
告别实车折腾!手把手教你用Vector VT平台搭建OBC/DCDC的HIL测试台架(附避坑清单)
从零搭建OBC/DCDC HIL测试台架:Vector VT平台实战指南与避坑手册 当你第一次面对堆满桌面的Vector VT板卡、缠绕如蛛网的线缆和数十个软件模块时,HIL测试的复杂性可能令人望而生畏。本文将以工程师视角,带你一步步完成从设备上电到首个充电协…...
告别智能插座!用Python和nilmtk库,5分钟入门非侵入式用电分析
告别智能插座!用Python和nilmtk库,5分钟入门非侵入式用电分析 你是否曾好奇家中每台电器究竟消耗了多少电量?传统方案需要在每个插座安装智能电表,成本高昂且部署复杂。现在,借助**非侵入式负载监控(NILM&…...
从芯片手册到PCB:SPL06与MPU9250的I2C实战布线要点与防护设计
从芯片手册到PCB:SPL06与MPU9250的I2C实战布线要点与防护设计 在无人机飞控板的设计中,气压传感器SPL06和九轴传感器MPU9250的稳定工作直接关系到飞行姿态控制的精确性。本文将深入探讨这两个关键传感器在PCB布局中的I2C总线设计要点,以及如何…...
从STM32转战合泰HT32F52352:手把手教你用GPTM定时器搞定四路舵机PWM控制
从STM32到HT32F52352的平滑迁移:GPTM定时器实现四路舵机PWM控制实战 对于习惯了STM32生态的开发者而言,初次接触合泰HT32系列MCU时往往面临两个挑战:如何快速理解新芯片的架构设计,以及如何将已有的STM32开发经验有效迁移。HT32F…...
2026职场新人学数据分析的价值
一、数据分析对职场新人的价值2026年职场竞争加剧,数据分析能力成为跨行业通用技能。掌握数据分析可提升决策效率、优化工作流程,在市场营销、运营、产品等岗位中显著增强竞争力。企业更倾向雇佣能通过数据驱动业务增长的员工。二、核心数据分析技能模块…...
在Taotoken控制台清晰观测各模型用量与成本消耗情况
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在Taotoken控制台清晰观测各模型用量与成本消耗情况 接入多个大语言模型进行开发时,一个常见的困扰是成本不透明。调用…...
企业级应用如何通过taotoken统一管理多个大模型api调用与成本
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 企业级应用如何通过Taotoken统一管理多个大模型API调用与成本 对于需要集成多种大语言模型的企业技术团队而言,直接对接…...
告别预编译:手把手教你从源码编译Scrcpy的Android Server端(含Meson配置详解)
从零构建Scrcpy Android Server端:Meson与Gradle深度协作指南 在Android投屏工具Scrcpy的生态中,大多数用户都习惯于直接使用预编译的Server端APK。但当你需要修改投屏协议、优化视频编码参数或添加自定义功能时,从源码完整编译Server端就成为…...
Allegro PCB设计自查清单:用Quick Reports快速搞定投板前的关键检查(附Dangling Line定位技巧)
Allegro PCB设计投板前终极自查指南:用Quick Reports构建高效质检流水线 在PCB设计领域,最后的5%往往消耗50%的精力。当设计进入投板前的关键阶段,工程师们常陷入两难:要么因过度谨慎反复全盘检查导致项目延期,要么因遗…...
别再手动算潮流了!用MATLAB+Matpower搞定IEEE标准算例(附完整代码)
电力系统潮流计算实战:MATLABMatpower高效解决方案 在电力系统分析与设计中,潮流计算是最基础却至关重要的环节。传统的手工计算方式不仅耗时费力,而且难以应对复杂网络结构的分析需求。本文将带您探索如何利用MATLAB平台上的Matpower工具包&…...
