当前位置: 首页 > news >正文

C++ 基础: cin和getline() 有啥区别?

所谓温故而知新,所以时不时会回头来看看我们最最基础的知识。
获取标准键盘输入的方法有多种。以C++语言来说,最常用的就是cin 和geline() 。那么它们之间有什么区别呢,我们总结一下。

一、cin和geline的异同点

在 C++ 中,cin 和 getline 都是用于从标准输入读取数据的函数。
它们的主要区别在于读取数据的方式和行为。

cin

cin 通常用于读取基本数据类型,如整数、浮点数和字符等,它会忽略输入缓冲区中的空白字符(如空格、制表符和换行符)并将其留在缓冲区中。例如:

c++
int num;
cin >> num;

如果用户输入了一个数字后按下回车键,cin 将读取该数字,并且回车字符仍然留在输入缓冲区中。

getline

相反,getline 用于读取一行文本,包括空格和其他特殊字符,直到遇到换行符或文件结尾。例如:

c++
string line;
getline(cin, line);

getline 会将输入缓冲区中的所有内容都读取完毕,包括换行符。因此,如果你想在使用 getline 之前调用 cin 来读取某个数据,你需要在这两个函数之间清空输入缓冲区(例如通过调用 cin.ignore() 函数),以免影响 getline 的结果。

一个完整的例子

#include <iostream>
#include <string>
using namespace std;int main()
{std::cout << "Hello World!\n";int a;cin >> a;cout << a << endl;cin.ignore();string s;getline(cin, s);cout << s << endl;
}

二、顺便盘点下在C语言中我们常用的获取键盘输入的方法

在C和C++中,获取键盘输入的几种常用方法包括:

1、使用getchar()函数:这个函数从标准输入(键盘)读取一个字符,并返回其ASCII码值。

#include <stdio.h>int main()
{char c;printf("Enter a character: ");c = getchar();  // 获取键盘输入printf("You entered: %c\n", c);return 0;
}

2、使用scanf()函数:这个函数可以按照指定的格式从标准输入(键盘)读取数据。例如,使用%c格式可以读取一个字符。

#include <stdio.h>int main()
{char c;printf("Enter a character: ");scanf("%c", &c);  // 获取键盘输入printf("You entered: %c\n", c);return 0;
}

3、使用gets()或fgets()函数:这些函数可以从标准输入(键盘)读取一行字符。gets()函数已经被淘汰了,建议使用更安全的fgets()函数。

#include <stdio.h>int main()
{char str[100];printf("Enter a string: ");fgets(str, 100, stdin);  // 获取键盘输入printf("You entered: %s", str);return 0;
}

使用第三方库:例如,使用ncurses库可以实现对终端窗口的控制和读取键盘输入等功能。
以上是一些常用的方法,但还有其他方法也可以获取键盘输入。需要根据具体的应用场景来选择最合适的方法。

相关文章:

C++ 基础: cin和getline() 有啥区别?

所谓温故而知新&#xff0c;所以时不时会回头来看看我们最最基础的知识。 获取标准键盘输入的方法有多种。以C语言来说&#xff0c;最常用的就是cin 和geline() 。那么它们之间有什么区别呢&#xff0c;我们总结一下。 一、cin和geline的异同点 在 C 中&#xff0c;cin 和 ge…...

在使用fastjson中遇到的问题

一、在使用fastjson中遇到的问题 导论&#xff1a;最近在写一个JavaFx项目的时候使用到了fastjson作为处理json数据的依赖。在其它非JavaFx项目中也使用到了相同版本的fastjson&#xff0c;但是可以正常运行&#xff0c;而在JavaFx项目中却报异常&#xff0c;刚开始以为是我的依…...

C++造轮子飙车现场之无锁、有锁环形队列实现

先看带锁的实现。 带锁版本 circular_queue.h // 头文件防卫 #ifndef CIRCULAR_QUEUE_H #define CIRCULAR_QUEUE_H#include <mutex> // 互斥量 #include <condition_variable> // 条件变量template <typename T> class CircularQueue { public:// 构造函数…...

Spring Profiles and @Profile

1. Overview In this tutorial, we’ll focus on introducing Profiles in Spring. Profiles are a core feature of the framework — allowing us to map our beans to different profiles — for example, dev, test, and prod. We can then activate different profiles…...

数据分析-数据探索

文章目录前言主要内容总结更多宝藏前言 &#x1f60e;&#x1f973;&#x1f60e;&#x1f920;&#x1f62e;&#x1f916;&#x1f648;&#x1f4ad;&#x1f373;&#x1f371; 随着大数据和人工智能技术的不断发展&#xff0c;数据分析已经成为了一种非常重要的技能和工…...

7个最受欢迎的Python库,大大提高开发效率

当第三方库可以帮我们完成需求时&#xff0c;就不要重复造轮子了 整理了GitHub上7个最受好评的Python库&#xff0c;将在你的开发之旅中提供帮助 PySnooper 很多时候时间都花在了Debug上&#xff0c;大多数人呢会在出错位置的附近使用print&#xff0c;打印某些变量的值 这个…...

Intellij IDEA 中调试 maven 插件

Intellij IDEA 中调试 maven 插件话痨一下步骤1. classfinal-demo 项目部分2. ClassFinal 部分参考资料话痨一下 目前有两个项目&#xff1a; ClassFinal 是一款java class文件安全加密工具。classfinal-demo 是我建的一个Demo&#xff0c;用来测试ClassFinal的加密效果。 目…...

Java全栈知识(1)缓存池

我们先看这么一道题 Integer x new Integer(123); Integer y new Integer(123); System.out.println(x y); // false Integer z 123; Integer k 123; System.out.println(z k); // true Integer a 200; Integer b 200; System.out.println(z k); //false 我们…...

网络安全的特性

0x00 前言 网络安全的特性包括&#xff0c;机密性&#xff0c;完整性&#xff0c;可用性&#xff0c;真实性和不可否认性。详细的内容可以参考如下的内容。 Xmind资源请下载~ 0x01 机密性 机密性&#xff08;Confidentiality&#xff09; 意味着阻止未经授权的实体&#x…...

YOLOv8 多目标跟踪

文章大纲 简介环境搭建代码样例跟踪原理代码分析原始老版实现新版本封装代码实现追踪与计数奇奇怪怪错误汇总lap 安装过程报错推理过程报错参考文献与学习路径简介 使用yolov8 做多目标跟踪 文档地址: https://docs.ultralytics.com/modes/track/https://github.com/ultralyt…...

Gitee搭建个人博客(Beautiful Jekyll)

目录一、引言二、博客模板选型 - Jekyll三、安装Jekyll环境3.1 安装Ruby3.2 安装Jekyll3.3 下载Jekyll主题四、搭建我的Gitee博客4.1 选择主题 - Beautiful Jekyll4.2 创建Gitee账号同名代码库4.3 写博客4.4 开通Gitee Pages服务五、对Beautifu Jekyll的相关优化一、引言 之前…...

图形视图框架 事件处理(item)

在图形界面框架中的事件都是先由视图进行接收&#xff0c;然后传递给场景&#xff0c;再由场景传递给图形项。通过键盘处理的话&#xff0c;需要设置焦点&#xff0c;在QGraphicsScene中使用setFoucesItem&#xff08;&#xff09;函数可以设置焦点&#xff0c;或者图形项使用s…...

PTA第六章作业详解

&#x1f680;write in front&#x1f680; &#x1f4dd;个人主页&#xff1a;认真写博客的夏目浅石. &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd; &#x1f4e3;系列专栏&#xff1a;夏目的作业 &#x1f4ac;总结&#xff1a;希望你看完之后&am…...

Java课程设计项目--音乐视频网站系统

一、功能介绍 随着社会的快速发展&#xff0c;计算机的影响是全面且深入的。人们生活水平的不断提高&#xff0c;日常生活中人们对音乐方面的要求也在不断提高&#xff0c;听歌的人数更是不断增加&#xff0c;使得音乐网站的设计的开发成为必需而且紧迫的事情。音乐网站的设计主…...

FPGA可以转IC设计吗?需要学习哪些技能?

曾经在知乎上看到一个回答“入职做FPGA&#xff0c;后续是否还可以转数字IC设计&#xff1f;” 从下面图内薪资就可以对比出来&#xff0c;对比FPGA的行业薪资水平&#xff0c;IC行业中的一些基础性岗位薪资比很多FPGA大多数岗位薪资都要高。 除了薪资之外更多FPGA转IC设计的有…...

初探Gradle

目录一.概述二.优点三.安装与配置1. 官网下载2. 配置环境变量3. 检验4. 配置国内镜像(可选)5. IDEA配置三.工程结构四.生命周期1.Initialization阶段2.Configuration阶段3.Execution阶段五.Task六.常用任务指令七.引入依赖1.本地依赖2.项目依赖3.直接依赖八.依赖类型九.插件十.…...

国产数据库介绍

人大金仓 Kingbase 北京人大金仓信息技术股份有限公司于1999年由中共人民大学专家创立&#xff0c;自成立以来&#xff0c;始终立足自主研发&#xff0c;专注数据管理领域&#xff0c;先后承担了国家“863”、“核高基”等重大专项&#xff0c;研发出了具有国际先进水平的大型…...

Java OpenJudge-test3

目录 1:明明的随机数 2:合影效果 3:不重复的单词 4:和为给定数 5:字符串数组排序问题 6:字符串排序 7:求序列中的众数 1:明明的随机数 总时间限制: 1000ms 内存限制: 65536kB 描述 明明想在学校中请一些同学一起做一项问卷调查&#xff0c;为了实验的客观性&#xff…...

蓝桥杯刷题冲刺 | 倒计时22天

作者&#xff1a;指针不指南吗 专栏&#xff1a;蓝桥杯倒计时冲刺 &#x1f43e;马上就要蓝桥杯了&#xff0c;最后的这几天尤为重要&#xff0c;不可懈怠哦&#x1f43e; 文章目录1.选数异或2.特殊年份1.选数异或 题目 链接&#xff1a; 选数异或 - 蓝桥云课 (lanqiao.cn) 给定…...

入行 5年,跳槽 3次,我终于摸透了软件测试这行(来自过来人的忠告)

目录 前言 第一年 第二年 第三年 第四年 作为过来人的一些忠告 前言 最近几年行业在如火如荼的发展壮大&#xff0c;以及其他传统公司都需要大批量的软件测试人员&#xff0c;但是20年的疫情导致大规模裁员&#xff0c;让人觉得行业寒冬已来&#xff0c;软件测试人员的职…...

SecGPT-14B完整指南:从镜像拉取、服务启动、参数调优到故障排查

SecGPT-14B完整指南&#xff1a;从镜像拉取、服务启动、参数调优到故障排查 1. SecGPT-14B简介 SecGPT-14B是一款专注于网络安全领域的文本生成模型&#xff0c;基于Qwen2ForCausalLM架构开发&#xff0c;拥有140亿参数规模。该模型专为安全专业人员设计&#xff0c;能够提供…...

蓝桥杯菜鸟错题

遍历一个字符串内比较&#xff0c;j 应从 i 的后一位开始&#xff0c;保证不重复...

基于小波变换与LabVIEW平台的电力电缆故障精准定位方法研究与应用

基于LabVIEW和小波分析的电力电缆故障定位方法 在分析行波法故障测距误差的基础上, 根据小波变换模极大值在不同尺度下的特 性, 运用自相关分析提供的约束条件, 基于LabVIEW 平台, 实现了对故障信号的准确识别和定 位, 准确测算出故障点的位置。 大量的仿真测试表明, 该方法故障…...

基于三菱PLC的自动配料控制系统的设计

基于PLC的自动配料控制系统设计【配套10000字设计lumwen&#xff0c;三菱PLC组态王组态等】 基于三菱PLC的自动配料控制系统的设计 混凝土搅拌站分为&#xff1a;砂石给料、水和一些特殊的加剂给料、传输搅拌与存储 搅拌机控制系统上电后&#xff0c;进入人机对话的操作界面&am…...

零下20度实测:国产SysMax PCAN FD在寒区标定中的稳定性与兼容性全记录

零下20度极限挑战&#xff1a;SysMax PCAN FD在寒区汽车电子标定中的实战全解析 当清晨的内蒙古满洲里气温骤降至-20℃&#xff0c;大多数电子设备早已进入"冬眠"状态&#xff0c;而我们的汽车电子标定工作却必须继续。在这个被称为"中国冷极"的地区&#…...

我用 QClaw 打造了一只“养生龙虾“——打工人保命健康守护助手

从一个简单的健康需求&#xff0c;到完整的健康提醒系统&#xff0c;我用 QClaw 这个智能助手完成了从"想法"到"落地"的全过程。缘起&#xff1a;打工人的健康焦虑 作为一个长期久坐、对着电脑敲代码的打工人&#xff0c;我越来越意识到健康的重要性。心血…...

别再到处找接口了!手把手教你用阿里云盘+Alist搭建自己的TVBox影视仓(附JSON配置模板)

私有影视仓搭建实战&#xff1a;用阿里云盘Alist打造专属TVBox资源库 每次打开TVBox却发现公共接口失效&#xff1f;第三方资源突然无法访问&#xff1f;与其在各大论坛反复搜索不稳定接口&#xff0c;不如用两小时搭建一个完全私有的影视管理系统。本文将彻底改变你获取影音资…...

DriverStore Explorer:Windows驱动全生命周期管理的开源解决方案——解决驱动冗余与设备冲突的高效工具

DriverStore Explorer&#xff1a;Windows驱动全生命周期管理的开源解决方案——解决驱动冗余与设备冲突的高效工具 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer Windows系统中驱动程…...

告别单调闪烁!用GD32F303的TIMER高级功能玩转PWM:实现S形曲线呼吸灯与多灯同步效果

解锁GD32F303定时器高阶玩法&#xff1a;S形曲线PWM与多灯协同控制艺术 呼吸灯效果在嵌入式设备中早已司空见惯&#xff0c;但大多数实现仍停留在简单的线性渐变阶段。当LED亮度以恒定速率变化时&#xff0c;人眼会感知到明显的"机械感"——就像早期数字音乐缺少模拟…...

从DCM到NII:医学影像数据处理中,为什么我劝你放弃保存回DCM格式?

从DCM到NII&#xff1a;医学影像数据处理中格式选择的深度实践指南 医学影像数据处理的流程中&#xff0c;文件格式的选择往往被忽视&#xff0c;却直接影响着后续分析的效率与兼容性。许多研究者习惯性地将处理后的数据保存回DCM格式&#xff0c;殊不知这可能在后续流程中埋下…...