cin,getline,cin.getline,scanf,gets等问题

1.cin读入一个数的时候,如cin>>s;我们输入s,之后按回车,是为了将s送入缓冲区,但是cin是不读入换行符的,所以换行符没有读入。所以当:

cin>>s;
getline(cin, str);

输入

2
string

getline是不会读入string的,因为getline能够读入换行符。所以输出的结果好像getline没有读入一样。

2.getline(cin,str,a)是将str读入到cin流中,当a不写时默认遇到换行符停止输入,并将换行符丢弃,如果a写了,如a为‘#’则表示遇到‘#’停止读入。
而while(getline(cin,line))语句注意这里默认回车符停止读入,按Ctrl+Z或键入EOF回车即可退出循环。在这个语句中,首先getline从标准输入设备上读入字符,然后返回给输入流cin,注意了,是cin,所以while判断语句的真实判断对象是cin,也就是判断当前是否存在有效的输入流。 参考博客:https://blog.csdn.net/duan19920101/article/details/50782816

3.cin.getline读取换行符并替换成’\0’,并且不会主动丢弃换行符,会把它留在输入队列中。 参考博客:https://blog.csdn.net/qq_38665104/article/details/82179096

4.scanf:不会读入空格,Tab,换行符,遇到这些会输入结束。
gets:可以读入空格,Tab,换行符。
两者在读取字符串结束后会在末尾加’\0’。
参考博客:https://www.cnblogs.com/wanghetao/archive/2011/11/01/2232234.html

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值