对读入多行含有空格的字符串的纪念~~

博客探讨了在C++中读取多行含有空格的字符串时遇到的问题,特别是当输入包含额外的换行和空格时。通过示例代码和解释,作者指出使用getline()和getchar()的组合可能存在陷阱,并分享了解决方案,即利用while循环消除第一行的干扰字符。文章提醒程序员注意输入处理的细节,以避免在实际编程中出现错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

真是破大防了家人们
首先明确的是,要读入一整行包含空格的字符串,需要用getline(cin,s)【假设字符串是s】
但是读入多行包含空格的字符串,尤其前面先输入行数n的时候就很坑!!这个时候其实是需要用getchar(),来处理掉你读入n之后输入的回车’\n’的,但是还是很🕳
下面先放一张图
这是原输入:
在这里插入图片描述

3
Zebras are my favorite animal!
The zombie zookeeper is surprisingly good with the zebras.
Fuzzy wuzzy was a bear.

在这里插入图片描述
上图看输出的对的,交上去却是
在这里插入图片描述
还有这种坑:
在这里插入图片描述
可以看到粘贴到记事本里面第一行的3后面不仅有换行,还有空格!!!所以一个getchar()自然会出错,当去掉第一行多余的空格后,上述代码输出是对的,但提交依旧WA
为了杜绝第一行所有的干扰字符,我们用一个while循环来解决
在这里插入图片描述
最后祝大家愚人节快乐~~~

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WTcrazy _

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值