c++基础之getline,cin.getline处理换行符的区别

cin.getline()函数是处理数组字符串的,其原型为cin.getline(char * , int),第一个参数为一个char指针,第二个参数为数组字符串长度。

getline(cin,str)函数是处理string类的函数。第二个参数为string类型的变量。 

可以看到cin不会丢弃换行符,它会把换行符留在输入队列中,所以getline遇到的换行符,把换行符替换成'\0'所以s是空串

我们用cin.get(c)处理cin丢弃的换行符之后getline就可以正常等待用户输入

下面来看看getline怎么处理输入hello之后的换行符

可以看到第二个getline可以正常输入说明第一个getline丢弃了hello后面的换行符

下面来看看cin.getline

可以看到cin.getline也会读入换行符

并且可以看到cin.getline不会丢弃换行符,会读入上次输入hello后面的换行符并且替换成'\0'

可以看到getline会丢弃hello后面的换行符所以cin.get(c)才会等待用户输入因为输入队列的换行符被丢弃了

但是

这是因为虽然hello的换行符被丢弃了,但是cin.get(c)用户输入的w后面的换行符没有被丢弃,所以需要在cin.get(c)后面加一条

cin.get(a)

这样就可以了

结论:

1、getline读取换行符 并且将换行符替换成'\0',并且会丢弃换行符

2、cin会把换行符留在输入队列中

3、cin.getline读取换行符并替换成'\0',并且不会主动丢弃换行符,会把它留在输入队列中

 

 

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值