C++中<iostream> 的cin >> str 和<string>的getline(cin, str) 用来读取用户输入的两种不同方式的不同点
C++中<iostream> 的cin >> str 和<string>的getline(cin, str) 用来读取用户输入的两种不同方式的不同点
<string>的getline()函数语法如下【https://cplusplus.com/reference/string/string/getline/】:
istream& getline (istream& is, string& str, char delim);
其中,is是输入流对象;str是目标字符串对象;delim是可选参数,表示定界符(分隔符,默认为换行符'\n')。
使用getline()函数时,它会从输入流中读取一行文本,并将读取到的内容存储到目标字符串str中,直到遇到定界符(或文件结尾)为止。如果指定了定界符delim,则getline()函数会在遇到该字符时停止读取,否则默认为换行符。
例子
#include <iostream>
#include <string>
using namespace std;int main() {string str;cout << "请输入名字:";getline(cin, str); //cin >> str;// 检查字符串是否为空if (str.empty()) {cout << "The string is empty." << endl;} else {cout << "The string is not empty." << endl;}return 0;
}
运行效果:
特别说明:C++中<iostream> 的cin >> str 和<string>中getline(cin, str) 用来读取用户输入的两种不同方式的不同点:
☆ 数据类型不同:cin >> str是用来读取字符串类型的单个单词或数字型数据(整数、实数等),而getline(cin, str)则是用来读取整行的字符串。
☆ 分隔符:使用cin >> str时,输入被空白字符(如空格、制表符、换行符)分隔为不同的字符串,并将第一个非空白字符开始的连续字符序列存储到str中,剩余部分将会留在输入队列中;而getline(cin, str)则会读取整行输入,包括空白字符,在遇到换行符之前将其存储到str中。
☆ 输入限制:cin >> str只能读取到空白字符之前的内容,因此无法读取含有空格的字符串,一次只能读取一个单词或数字。而getline(cin, str)可以读取包含空格的完整行,因此可以读取多个单词或整行文本。
☆ 换行符处理:cin >> str读取后会将换行符留在输入流中,可以影响下一次读取操作。相比之下,getline(cin, str)会将换行符从输入流中移除,以防止影响后续读取操作。
【注:空白字符是指在文本中没有可见形式的字符,主要包括空格、制表符和换行符。它们在文本处理中具有不同的作用。
空格(Space):表示一个可见的空间,在文本中起到分隔单词或字符的作用。多个连续的空格会被视为一个空格。
制表符(Tab):通常用\t来表示,在文本中占据一个固定的宽度,经常用于对齐文本中的内容。
换行符(Newline):表示换行的特殊字符,在不同的操作系统中可能有不同的表示方式。在Unix和Linux系统中,换行符用\n表示;在Windows系统中,换行符由两个字符组成,即回车符(Carriage Return)和换行符,用\r\n表示。
这些空白字符在输入和输出操作中都需要注意处理。在C++中,空白字符通常用于分隔不同的数据项,而换行符用于标识一行的结束。了解和正确处理这些字符对于正确解析和处理用户输入以及生成正确格式的输出非常重要。】
需要注意的是,在C++中,有两种getline函数。第一种定义在头文件<istream>中https://cplusplus.com/reference/istream/istream/getline/ ;第二种定义在头文件<string>中https://cplusplus.com/reference/string/string/getline/ 。
<istream>中的getline()函数用于从输入流中读取一行文本,而<string>中的getline()函数用于从一个字符串中读取一行文本。
前面介绍的是<string>中的getline()函数。
下面介绍<istream>中的getline()函数:getline()函数是istream类的一个成员函数,可以从输入流(如cin)读取一行文本并存储到一个std::string对象中。它的函数原型为:
istream& getline (char* s, streamsize n, char delim );
参数说明:
s:表示指向字符数组的指针,其中提取的字符存储为 c 字符串。
n:指定了字符数组s的最大长度。
delim:可选参数,表示行的分隔符,如果不指定,默认为换行符('\n')。
<istream>中的getline()函数用于读取一行文本,存储到字符数组中。
例如:
#include <iostream>
using namespace std;int main()
{char name[256];cout << "Please input your name: ";cin.getline(name, 256); // 从标准输入读取一行文本cout << "The result is: " << name << endl;return 0;
}
运行之:
附录
C++中两种getline函数用法还可参见 https://www.jb51.net/article/180289.htm
相关文章:

C++中<iostream> 的cin >> str 和<string>的getline(cin, str) 用来读取用户输入的两种不同方式的不同点
C中<iostream> 的cin >> str 和<string>的getline(cin, str) 用来读取用户输入的两种不同方式的不同点 <string>的getline()函数语法如下【https://cplusplus.com/reference/string/string/getline/】: istream& getl…...

微信报修系统有什么优势?怎么提升企业维修工作效率与管理水平?
随着智能化时代的到来,企业、事业单位的现代化设备数量和种类不断增加,原本繁琐的报修、填写记录、检修管理等工作得以简化。从发起报修到维修,以及维修之后给予评价的整个过程,通过手机微信报修系统均能看到,既省时又…...

11.2.1-通货膨胀CPI
文章目录 1. 什么是CPI2. 在哪里获取CPI数据3. CPI的同比、环比到底是什么意思?4. 计算购买力侵蚀5. 复利计算 微不足道的小事也会引发惊人的结果, 每念及此, 我就认为世上无小事。——布鲁斯巴登(Bruce Barton) 核心内…...

服务器基础
0x01基础 介绍 可以理解为企业级的电脑,比个人使用的电脑具备更强的配置、性能、可靠性及稳定性。设计工艺和器件全部采用企业级设计,保障7*24小时稳定运行。 演进历史 处理性能 外观 发展方向 分类 按外形分类 按高度分类 按应用分类 按综合能力…...
mybatis中#{ }和${ }的区别
先说结论:二者肯定是有区别的 区别总结 ${ } 直接的 字符串 替换,在mybatis的动态 SQL 解析阶段将会进行变量替换。 #{ } 通过预编译,用占位符的方式?传值可以把一些特殊的字符进行转义,这样可以防止一些sql注入。 举例说明区…...

【真人语音】讯飞星火个人声音训练及导出下载工具V0.2.exe
【项目背景】 小编一直在尝试着短视频技术,在读文案的时候经常会读错;所以,只能用微软或者剪映的文本转语音软件。 很早之前在Github上也看到过真人人声训练的开源代码,尝试过一番之后,也是以失败告终;就…...

正中优配:创业板指大涨3.47%!减速器等概念板块掀涨停潮!
周二(8月29日),三大股指团体涨超1%。截至上午收盘,上证指数涨1.39%,报3141.82点;深证成指和创业板指别离涨2.41%和3.47%;沪深两市算计成交额6264.51亿元,总体来看,两市个股涨多跌少&…...

多功能租车平台微信小程序源码 汽车租赁平台源码 摩托车租车平台源码 汽车租赁小程序源码
多功能租车平台微信小程序源码是一款用于汽车租赁的平台程序源码。它提供了丰富的功能,可以用于租赁各种类型的车辆,包括汽车和摩托车。 这个小程序源码可以帮助用户方便地租赁车辆。用户可以通过小程序浏览车辆列表,查看车辆的详细信息&…...
spring事件和线程池区别
Spring事件(Spring Event)和线程池(Thread Pool)是两个不同的概念。 Spring事件是Spring框架中的一种机制,用于在应用程序中实现发布-订阅模式。通过定义事件和监听器,可以在特定事件发生时,通…...

深圳寄墨西哥专线国际物流详解
随着全球贸易的不断发展,国际物流服务的需求也越来越大。深圳这座中国的特区城市,不仅是全球电子产品供应链的重要节点,也是国际物流服务的中心之一。对于那些需要将物品从深圳邮寄到墨西哥的人来说,深圳邮寄到墨西哥专线的国际物…...

PHP教学资源管理系统Dreamweaver开发mysql数据库web结构php编程计算机网页
一、源码特点 PHP 教学资源管理系统是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 源码 https://download.csdn.net/download/qq_41221322/88260480 论文 https://downl…...

机器学习---决策树算法(CLS、ID3、CART)
1. 决策树 决策树(Decision Tree)又称为判定树,是运用于分类的一种树结构。其中的每个内部结点 (internal node)代表对某个属性的一次测试,每条边代表一个测试结果,叶结点(leaf&am…...

【算法与数据结构】404、LeetCode左叶子之和
文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:思路比较简单,遍历所有节点然后判断该节点是否为左叶子节点,如果是,…...

Apifox下载安装步骤
我们先访问网址 https://apifox.com/?utm_sourcebaidu&utm_mediumsem&utm_campaign251430236&utm_content7810722111&utm_termapifox%E6%9F%A5%E7%9C%8B%E7%89%88%E6%9C%AC&bd_vid8323327349775096324 然后 这里这个免费下载已经写的这么明显了 那就直接点…...
大华摄像头有问题,海康摄像头也有问题
买了个大华摄像头,除了抗噪方面效果不好,我是很满意的。前一段时间摄像头启动出了点问题(忘记拔掉SD卡),于是买了个海康的。 大华摄像头是3寸,海康是2寸。视频效果差多了。看来大有大的道理。更可恨的是&a…...

Linux多线程同步机制(下)
文章目录 前言一、读写锁二、条件变量总结 前言 一、读写锁 多线程同步机制中的读写锁(Read-Write Lock)是一种特殊的锁机制,用于控制对共享资源的读写访问。读写锁允许多个线程同时读取共享资源,但在写操作时需要独占访问。 读…...

【QT】ComboBox的使用(14)
ComboBox这个控件我常用于多文本的储存、调用,正如他的中文意思为:下拉列表框。 下拉列表框:字面意思就是一个多文本的列表框,今天来看下如何使用ComboBox这个控件。 一.环境配置 1.python 3.7.8 可直接进入官网下载安装&…...
关于写英文论文的一些总结
名词连接名词组成名词,例如任务名,用task name,而不是name of task。其他各种词也是类似的;本文提出了什么什么,用 this study;多用it is become xx,这种更好,而不是we xx࿱…...
swagger 2.10.5 整合 spring boot
参考: http://springfox.github.io/springfox/ https://github.com/springfox/springfox http://springfox.github.io/springfox/docs/current/ https://github.com/springfox/springfox-demos https://github.com/springfox/springfox-demos/tree/2.9.2 https://gi…...

Python 练习:剔除数字
练习:剔除数字: 要求如下: 1、编写一段程序代码,程序运行后, 需要用户随意输入一段包含有数字和字母的字符串; 2、程序会自动删除字符串中的数字, 然后输出一串没有数字的字符串(纯…...

第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...

React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...

Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...

深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...

Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...