cin、cin.getline()、getline()的用法【C++】

news2024/11/28 7:50:00

一、cin>>

用法1:输入一个数字或字符

#include <iostream>
using namespace std;
int main ()
{
    int a,b;
    cin>>a>>b;
    cout<<a+b<<endl;
    return 0;
}

用法2:接收一个字符串,遇“空格”、“TAB”、“回车”就结束

#include <iostream>
using namespace std;
int main ()
{
    char a[20];
    cin>>a;
    cout<<a<<endl;
    return 0;
}

输入:jkljkljkl
输出:jkljkljkl

输入:jkljkl jkljkl       //遇空格结束
输出:jkljkl

二、cin.getline()

用法:接收一个字符串,可以接收空格并输出

#include <iostream>
using namespace std;
int main ()
{
    char m[20];
    cin.getline(m,5);
    cout<<m<<endl;
    return 0;
}

输入:jkljkljkl
输出:jklj

接收5个字符到m中,其中最后一个为'\0',所以只看到4个字符输出;

如果把5改成20:
输入:jkljkljkl
输出:jkljkljkl

输入:jklf fjlsjf fjsdklf
输出:jklf fjlsjf fjsdklf

延伸:
1、cin.getline()实际上有三个参数,cin.getline(接收字符串的变量,接收字符个数,结束字符)
2、当第三个参数省略时,系统默认为'\0'
3、如果将例子中cin.getline()改为cin.getline(m,5,'a');当输入jlkjkljkl时输出jklj,输入jkaljkljkl时,输出jk

三、getline()

用法:接收一个字符串,可以接收空格并输出,需包含“#include<string>”

#include<iostream>
#include<string>
using namespace std;
int main ()
{
    string str;
    getline(cin,str);
    cout<<str<<endl;
    return 0;
}

输入:jkljkljkl

输出:jkljkljkl

输入:jkl jfksldfj jklsjfl
输出:jkl jfksldfj jklsjfl

四、注意事项

1、cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数

2、当同时使用cin>>,getline()时,需要注意的是,在cin>>输入流完成之后,getline()之前,需要通过

str="\n";
getline(cin,str);

的方式将回车符作为输入流cin以清除缓存。

如果不这样做的话,在控制台上就不会出现getline()的输入提示,而直接跳过,因为程序默认地将之前的变量作为输入流。

看下面这几段代码来体会一下:

这是一个正确用法:

/*-------------Basic Input/Output-------------*/
#include<iostream>
#include<string>
#include<sstream>
using namespace std;

int main() {
	int age;
	//standard input(cin)
	cout << "Please enter an integer value as your age: ";
	cin >> age;
	cout << "Your ager is: " << age << ".\n";

	//cin and string
	string mystr;
	cout << "What's your name? " << endl;

	mystr = "\n";
	getline(cin, mystr);

	getline(cin, mystr);
	cout << "Hello," << mystr << ".\n";
	system("pause");
	return 0;
}

下面这个是将那两行代码注释掉了,可以发现在控制台上就不会出现getline()的输入提示,而直接跳过,因为程序默认地将之前的变量作为输入流。

/*-------------Basic Input/Output-------------*/
#include<iostream>
#include<string>
#include<sstream>
using namespace std;

int main() {
	int age;
	//standard input(cin)
	cout << "Please enter an integer value as your age: ";
	cin >> age;
	cout << "Your ager is: " << age << ".\n";

	//cin and string
	string mystr;
	cout << "What's your name? " << endl;

	//mystr = "\n";
	//getline(cin, mystr);

	getline(cin, mystr);
	cout << "Hello," << mystr << ".\n";
	system("pause");
	return 0;
}

下面是完整的代码:

/*-------------Basic Input/Output-------------*/
#include<iostream>
#include<string>
#include<sstream>
using namespace std;

int main() {
	int age;
	//standard input(cin)
	cout << "Please enter an integer value as your age: ";
	cin >> age;
	cout << "Your ager is: " << age << ".\n";

	//cin and string
	string mystr;
	cout << "What's your name? " << endl;

	mystr = "\n";
	getline(cin, mystr);

	getline(cin, mystr);
	cout << "Hello," << mystr << ".\n";

	char sex;
	cout << "Please enter a F or M as your sex: ";
	cin >> sex;
	cout << "Your sex is: " << sex << endl;
	cout << "What's your favorite team? ";
	mystr = "\n";
	getline(cin, mystr);

	getline(cin, mystr);
	cout << "I like " << mystr << ".\n";

	system("pause");
	return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

气导耳机有哪些品牌?市面上气传导耳机哪家好?

​随着人们对运动健康的重视&#xff0c;越来越多的人开始关注运动时佩戴的耳机。然而&#xff0c;传统的耳机在运动时往往会受到限制&#xff0c;而气传导耳机则可以避免这些问题&#xff0c;为用户带来更加舒适和便捷的使用体验。今天就来展开说说&#xff0c;市面上气传导耳…

【程序员必知必会3】ClickHouse和Hive究竟哪些区别

ClickHouse和Hive究竟哪些区别 ClickHouse和Hive都是用于大数据处理和分析的分布式存储和计算系统&#xff0c;但它们之间存在一些区别&#xff1a; 架构&#xff1a;ClickHouse采用列式存储和向量化执行引擎&#xff0c;可以实现亚秒级别的数据查询。而Hive采用基于Hadoop的数…

设置Linux CentOS7桥接模式连网

在虚拟机上安装centos7系统后&#xff0c;首要任务就是设置网络。 我们在文章《设置linux centos7连接网络》中讨论了如何设置NAT模式连网。本文讨论如何在设置好NAT模式后&#xff0c;调换为桥接模式。 仍采用图形化方式设置方法。 一、查看物理机网络 把虚拟机设置为桥接…

JDK源码解析-HashMap面试题

1. HashMap类 * HashMap底层数据结构(为什么引入红黑树、存储数据的过程、哈希碰撞相关问题)* HashMap成员变量(初始化容量是多少、负载因子、数组长度为什么是2的n次幂)* HashMap扩容机制(什么时候需要扩容&#xff1f; 怎么进行扩容&#xff1f;)* JDK7 与 Jdk8比较&#xff…

检索与毒害 —— 对抗人工智能供应链攻击

作者&#xff1a;DAVE ERICKSON 在这篇文章中&#xff0c;了解人工智能大语言模型的供应链漏洞&#xff0c;以及如何利用搜索引擎的人工智能检索技术来对抗人工智能的错误信息和故意篡改。 虽然对于人工智能研究人员来说可能是新鲜事&#xff0c;但供应链攻击对于网络安全世界…

如何批量生成并分割m3u8视频,轻松提升您的视频制作效率!

亲爱的视频制作爱好者&#xff0c;您是否曾经为如何高效地批量生成和分割m3u8视频而烦恼&#xff1f;今天&#xff0c;我们为您带来了一款神奇的软件&#xff0c;让您的视频剪辑工作变得轻松无比&#xff01; 第一步&#xff0c;进入“媒体梦工厂”在主界面中有八个板块&#…

新手如何备考PMP考试?

回头看来&#xff0c;从战略上来说&#xff1a; 备考第一重点&#xff1a;要有一个清晰的目标——我要过&#xff01; 第二重点&#xff1a;足够重视它——把它的优先级调整到仅次于工作&#xff1a;万籁俱寂&#xff0c;唯有学习。 第三重点&#xff1a;自律——有了第一点…

Python入门教程 | Python 流程控制语句

​ 程序流程控制的三种结构 1.顺序结构 计算机执行程序的步骤是从上到下依次执行 2.选择结构&#xff08;条件控制&#xff09; Python 条件语句是通过一条或多条语句的执行结果&#xff08;True 或者 False&#xff09;来决定执行的代码块。 可以通过下图来简单了解条件…

【2023集创赛】国家集创中心杯三等奖:不对称轻失配运算放大器

本文为2023年第七届全国大学生集成电路创新创业大赛&#xff08;“集创赛”&#xff09;国家集创中心杯三等奖作品分享&#xff0c;参加极术社区的【有奖征集】分享你的2023集创赛作品&#xff0c;秀出作品风采&#xff0c;分享2023集创赛作品扩大影响力&#xff0c;更有丰富电…

打工人必知:考取了HCIE后,哪些工作内容,工作岗位有哪些?

作为一个打工人&#xff0c;都很关心考到HCIE后&#xff0c;我们可以做哪些工作内容&#xff0c;就是有哪些岗位呢&#xff1f; 先给直接说答案&#xff0c;如果你现在手边有电脑&#xff0c;现在打开智联招聘&#xff0c;输入我现在所说的这些职位名称&#xff1a; 第一个&…

苹果电脑要安装杀毒软件吗?mac用什么杀毒软件好?

对于这个问题让人很是纠结&#xff0c;Mac不需要杀毒这个理论一直都深入人心&#xff0c;Mac OS X权限管理特性可以防毒的说法也一直甚嚣尘上&#xff0c;很多小伙伴如我一样搞不清楚到底要不要安装杀毒软件。&#xff0c;毕竟当前个人信息安全泄露泛滥不穷的年代&#xff0c;我…

振动智能监测解析:从数据中预测设备故障

在现代工业领域&#xff0c;设备的可靠性和稳定性对于生产效率和产品质量至关重要。设备故障可能导致生产停滞、维修成本增加以及产品质量下降&#xff0c;因此&#xff0c;采用先进的监测技术来预测和防止设备故障变得尤为重要。本文将深入探讨振动智能监测&#xff0c;这是一…

PMP是什么?项目管理专业人士资格认证介绍

PMP认证旨在评估和确认具备一定经验和知识的项目管理专业人士的能力。通过获得PMP认证&#xff0c;项目经理可以证明他们具备在各个行业中成功领导和管理项目所需的技能。这些技能包括十二原则、8大绩效等方面的知识。 以下是PMP认证的详细介绍&#xff1a; 1. 资格要求&…

基于SpringBoot+Vue架构的药物咨询平台

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 随着人们对健康和医疗…

安装python第三方模块出现Requirement already satisfied:模块名 in XX:\XXXX\XX\site-packages

安装python第三方模块出现Requirement already satisfied:模块名 in XX:\XXXX\XX\site-packages Requirement already satisfied:模块名 in XX:\XXXX\XX\site-packages Requirement already satisfied: PyQtWebEngine in d:\anaconda2021\lib\site-packages (5.12.1) 解决办…

Conformer: Local Features Coupling Global Representationsfor Visual Recognition

论文链接&#xff1a;https://arxiv.org/abs/2105.03889 代码链接&#xff1a;https://github.com/pengzhiliang/Conformer 参考博文&#xff1a;Conformer论文以及代码解析&#xff08;上&#xff09;_conformer代码_从现在开始壹并超的博客-CSDN博客 摘要 在卷积神经网络…

【K哥爬虫普法】百亿电商数据,直接盗取获利,被判 5 年!

我国目前并未出台专门针对网络爬虫技术的法律规范&#xff0c;但在司法实践中&#xff0c;相关判决已屡见不鲜&#xff0c;K 哥特设了“K哥爬虫普法”专栏&#xff0c;本栏目通过对真实案例的分析&#xff0c;旨在提高广大爬虫工程师的法律意识&#xff0c;知晓如何合法合规利用…

最快1个月录用!9月SCI/SSCI/EI刊源表已更新!

2023年9月SCI/SSCI/EI期刊目录更新 2023年9月份刊源表已更新&#xff01;计算机、医学、工程、环境、SSCI均有新增期刊&#xff0c;1区(TOP)&#xff0c;最快1个月录用&#xff0c;好刊版面紧俏&#xff0c;切莫错失机会&#xff01; 01 计算机领域 02 医学与制药领域 03 工…

修改部署后的SSM项目配置文件

修改部署后的SSM项目配置文件 环境配置&#xff1a;window10&#xff0c;JDK8&#xff0c;项目采用SSM编写&#xff0c;部署在tomcat上&#xff0c;maven打包是打成war包 1、找到配置文件 打开tomcat目录 D:\Programming\apache-tomcat-8.5.58\webapps\MyPRO\WEB-INF\class…

磁共振脑灌注成像方法(ASL)

前言 与结构成像相比&#xff0c;生理成像是一个可以揭示组织和器官功能的领域&#xff0c;而不仅仅是提供形态信息。通过这种方式&#xff0c;它可以为评估人体提供补充信息。在一些疾病中&#xff0c;与结构变化相比&#xff0c;预期组织中的生理变化发生的时间要早得多。然…