c/c++,字符,字符串,各种方式读入与对空格,回车的处理

 
#include<iostream>
#include<string>
using namespace std;
int main()
{char a[50],b[50],charr;//经测试,cin读入字符串,会识别空格和回车为截止,并且不会吞掉,//只是每次读的时候会从第一个不为空格/回车的字符开始读(因为加一个getchar不影响,加两个就影响了) //  ceshi: 	1.qwe\nasd\n||//		    2.qwe asd\n||//			3.   qwe asd\n||均正确! //输入:      asd\nqwe\n输出:asd**qwe**\n**//输入:\n\n\n\nasd qwe\n输出:asd**qwe** **//总结:缓冲区中,跳过了就是跳过了,getchar不会从头识别你是空格还是回车,因为你是先cin的a,然后getchar 所以比如cin读到东西了以后才能执行后面getchar语句,同时这时候缓冲区指针是cin读到的内容,所以你最开始输入多少个\n或者空格都无所谓的 
//	cin>>a;charr=getchar();cin>>b;
//	cout<<a<<"**"<<b<<"**"<<charr<<"**"<<endl;//经测试,getline读入字符串,读入空格,会识别回车为截止,即不读入\n但是会吞掉(跳过)他(即将\n移出缓冲区,以防下次读入的时候直接\n了)(所以上来就\n,用cin不影响但是getline就影响了) //或理解成会将\n读入字符串,但是优化的时候将其换成\0,反正就是缓冲区和字符串中都没有这个\n //  不带getchar的ceshi: 1.qwe\nasd  2.qwe asd  均正确!//带getchar的ceshi:3.qwe asd\n \n||输出:qwe asd**** **//因为getchar只是读一个字符,不会将\n跳过 
//	string s1,s2; 
//	getline(cin,s1);
//	charr=getchar();
//	getline(cin,s2);
//	cout<<s1<<"**"<<s2<<"**"<<charr<<"**"<<endl;//经测试,scanf读入字符串,会识别空格和回车为截止,并且不会吞掉。 //  ceshi: 	1.qwe\nasd\n||//		    2.qwe asd\n||//			3.   qwe asd\n||均正确! scanf("%s",a);/*getchar()*/scanf("%s",b);cout<<a<<"**"<<b<<"**"<<endl;return 0 ;
 } 

下面是对字符的代码

#include<iostream>
using namespace std;
int main()
{char a,b;//经测试,cin读入字符,会识别空格和回车,并且会跳过回车 //  ceshi: 1.sd   2.s\nd   3.s d  均正确! 
//	cin>>a>>b;
//	cout<<a<<"**"<<b<<"**"<<endl;//经测试,getchar读入字符,没有识别这一说了,并且不会跳过回车和空格//  ceshi: 1.sd   2.s\nd   3.s d  只有1正确! 
//	a=getchar();	
//	b=getchar();
//	cout<<a<<"**"<<b<<"**"<<endl;//经测试,getchar与 scanf结果完全相同 scanf("%c",&a);scanf("%c",&b);cout<<a<<"**"<<b<<"**"<<endl;return 0 ;} 

scanf和cin读字符串的时候回跳过缓冲区首的所有空格回车 但是gets getline会都读进去,

测试代码:

#include<iostream>
#include<cstdio>
#include<string>using namespace std;
int main()
{char a[100];string s;int n;cin>>n;gets(a);//换成scanf试试//scanf("%s",a); cout<<"****";cout<<a;cout<<"****"<<endl;//	getline(cin,s);和gets是一模一样的,,不需要试了 	
//	cout<<"****";
//	cout<<s;
//	cout<<"****"<<endl;return 0 ;
}

输入:

5\n||gets和scanf的结果就不一样了

    5\n|| 结果与上一行对应的结果相同

 

总结:

scanf("%s",a);//cin>>a;  会从第一个不为空格、回车的地方开始,并且遇到空格回车就结束 ,并且将空格回车留在缓冲区中(所以后面如果用gets  则需要先跟一个getchar)

gets 从缓冲区第一个字符开始读(有啥读啥),一直读到第一个回车,并且把这个回车清除出缓冲区,(或理解成读成自己的字符串,再将其改成'\0'),所以gets好人性化啊!!不会给后面的读入留下什么后遗症。

综上所述 gets读的话,你上来就敲回车,就会结束程序了,但是如果scanf读的话,一直敲回车跟没敲一样,他还在等着你读第一个字符。


关于gets,cin.getline,getline

相比gets和cin.getline(str,10005);之下,getline(cin,str)就不这么友好,他和gets,cin.getline一样怕之前残留的 '\n' 但是不友好的地方在于(也就是唯一的区别在于)并不会帮忙把后面的'\n'吞掉,所以getline之后最好加一个getchar,而gets和cin.getline则不需要。

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

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

相关文章

【CodeForces - 357D】Xenia and Hamming (字符串问题,数论,思维)

题干&#xff1a; Xenia is an amateur programmer. Today on the IT lesson she learned about the Hamming distance. The Hamming distance between two strings s  s1s2... sn and t  t1t2... tn of equal length n is value . Record [si ≠ ti] is the Iverson n…

【牛客 - 181D】小叶的巡查(树的直径,数学)

题干&#xff1a; 8102年&#xff0c;牛客系列竞赛空前繁荣。为了更好地管理竞赛&#xff0c;小叶决定巡查于各大城市之间&#xff0c;体察民情。所以&#xff0c;从一个城市马不停蹄地到另一个城市成了小叶最常做的事情。小叶有一个钱袋&#xff0c;用于存放往来城市间的路费…

【蓝桥杯 - 练习】k倍区间(思维,数组)

题干&#xff1a; http://lx.lanqiao.cn/problem.page?gpidT444 问题描述 给定一个长度为N的数列&#xff0c;A1, A2, ... AN&#xff0c;如果其中一段连续的子序列Ai, Ai1, ... Aj(i < j)之和是K的倍数&#xff0c;我们就称这个区间[i, j]是K倍区间。   你能求出数列中…

【 HDU - 1525 】Euclid's Game(较难找规律,玄学博弈,分析必败点必胜点)

题干&#xff1a; Two players, Stan and Ollie, play, starting with two natural numbers. Stan, the first player, subtracts any positive multiple of the lesser of the two numbers from the greater of the two numbers, provided that the resulting number must be…

【CodeForces - 569A】Music (数学公式化简,模拟追及问题)

题干&#xff1a; Little Lesha loves listening to music via his smartphone. But the smartphone doesnt have much memory, so Lesha listens to his favorite songs in a well-known social network InTalk. Unfortunately, internet is not that fast in the city of E…

【CodeForces - 569B】Inventory (标记,乱搞)

题干&#xff1a; Companies always have a lot of equipment, furniture and other things. All of them should be tracked. To do this, there is an inventory number assigned with each item. It is much easier to create a database by using those numbers and keep …

【CodeForces - 371D】Vessels(思维,元素合并,并查集)

题干&#xff1a; There is a system of n vessels arranged one above the other as shown in the figure below. Assume that the vessels are numbered from 1 to n, in the order from the highest to the lowest, the volume of the i-th vessel is ai liters. Initially…

【UVA - 10891 Game of Sum 】【HRBUST - 1622】 Alice and Bob (区间dp,博弈问题)

题干&#xff1a; 有一个长度为N的整数序列&#xff0c;Alice和Bob轮流取数&#xff0c;Alice先取。每次玩家只能从左端或者右端 取一个或多个数&#xff0c;但不能两端都取。所有数都被取走后游戏结束&#xff0c;然后统计每个人取走的所有数之和&#xff0c; 作为各自的得分…

code iban 是有什么组成_EAN-128码和Code-128码的区别

什么是Code-128码&#xff1f;什么是EAN-128码&#xff1f;二者之间有什么区别&#xff1f;接下来小编就给大家解除心中的疑惑。Code-128码是一种高密度的条形码&#xff0c;可表示从 ASCII 0 到ASCII 127 共128个字符&#xff08;其中包含数字&#xff0c;字母&#xff0c;符号…

计算机中丢失setupxml.dll,Win7电脑安装VideoStudio Pro X6显示丢失SetupXML.dll文件怎么解决...

最近有win7系统用户在电脑安装VideoStudio Pro X6软件的时候&#xff0c;突然出现错误的提示&#xff0c;显示无法启动此程序&#xff0c;因为计算机中丢失SetupXML.dll。尝试重新安装该程序来解决此问题&#xff0c;要怎么办呢&#xff0c;下面给大家讲解一下Win7电脑安装软件…

怎么p出模糊的照片_36. 盲去卷积 - 更加实用的图像去模糊方法

本文同步发表在我的微信公众号和知乎专栏“计算摄影学”&#xff0c;欢迎扫码关注&#xff0c;上一篇文章35. 去卷积&#xff1a;怎么把模糊的图像变清晰&#xff1f;吸引了很多朋友的关注。在这篇文章里面&#xff0c;我给大家讲了一种叫做“非盲去卷积”的方法&#xff0c;当…

【CodeForces - 1038A 】Equality (思维水题,预处理字符串)

题干&#xff1a; You are given a string ss of length nn, which consists only of the first kk letters of the Latin alphabet. All letters in string ss are uppercase. A subsequence of string ss is a string that can be derived from ss by deleting some of its…

docker修改镜像的存储位置_云原生存储详解:容器存储与 K8s 存储卷(内含赠书福利)...

作者 | 阚俊宝 阿里巴巴技术专家参与文末留言互动&#xff0c;即有机会获得赠书福利&#xff01;导读&#xff1a;云原生存储详解系列文章将从云原生存储服务的概念、特点、需求、原理、使用及案例等方面&#xff0c;和大家一起探讨云原生存储技术新的机遇与挑战。本文为该系列…

vb简易计算机器程序,vb简易计算器源码

代码如下&#xff1a;/***Author:乌鸟heart*Version:1.0*/Dim IntX As Double 全局变量&#xff0c;用于存储计算的数值Dim IntOperation As Double 标记运算类型Dim isBegin As Boolean 标记是否已经给IntX赋值Public Sub Clear() 清空命令函数screen.Caption ""En…

【CodeForces - 1038B 】Non-Coprime Partition (构造,数组特征)

题干&#xff1a; Find out if it is possible to partition the first nn positive integers into two non-empty disjoint sets S1S1 and S2S2 such that: gcd(sum(S1),sum(S2))>1gcd(sum(S1),sum(S2))>1 Here sum(S)sum(S) denotes the sum of all elements presen…

计算机专业用锐龙笔记本,轻松应对工作挑战——ThinkPad T14 锐龙版,适合办公的笔记本电脑...

拥有一部适合办公的笔记本电脑&#xff0c;可以成为商务人士忙碌工作中强有力的支持。联想旗下的ThinkPad 系列笔记本电脑&#xff0c;一直秉持为高端商务人士服务的理念&#xff0c;以稳定、流畅、安全的使用体验得到广泛认可。其中的ThinkPad T14 锐龙版&#xff0c;更是有着…

python tabula 使用方法_Python中os.walk()的使用方法

os.walk()主要用来扫描某个指定目录下所包含的子目录和文件。这篇文章将通过几个简单的例子来说明python中os.walk()的使用方法。假设我们的test文件夹有如下的目录结构&#xff1a;我们首先用os.walk扫描test文件夹下所有的子目录和文件&#xff1a;# 使用os.walk扫描目录 imp…

【CodeForces - 1038C】Gambling (博弈问题,优先队列模拟,贪心)

题干&#xff1a; Two players A and B have a list of nn integers each. They both want to maximize the subtraction between their score and their opponents score. In one turn, a player can either add to his score any element from his list (assuming his list…

乐乐勇智能教育机器人有多少型号_【头条】协作机器人平台化趋势将会是柔性自动化的破局之道...

智能机器人商情微信公众号&#xff0c;关注中国智能机器人行业热点与发展趋势&#xff0c;打造快捷高效的行业资讯交互平台。更多精彩内容&#xff0c;您可以点击标题下方的蓝字关注我们。导语艾利特平台级CS系列协作机器人全新发布9月15日上海工博会第一天&#xff0c;艾利特机…

计算机毕设结束语致谢,毕业设计结束语和致谢

毕业设计结束语和致谢时间&#xff1a;2021-01-17 20:08:40 分类&#xff1a;小结范文 | 毕业论文致谢词范文 | Word文档下载毕业设计结束语和致谢导语&#xff1a;论文致谢应以简短的文字对课题研究与论文撰写过程中间直接给予帮助的人员(例如指导教师、答疑教师及其他人员)…