cin.getline()、cin.get()、getline(cin,str)、gets()区别比较

cin.getline()

1、多余规定字符串长度时,cin会出现失效位,可以通过cin.clear()清除,然后就正常读取后面的字符;

2、不接收回车或结束标志字符;

cin.get()

1、多余规定字符串长度时,cin不会出现失效位,而是将多余的存入读取缓冲区,再次调用cin.get()可以读取剩下的字符内容;

2、会接收回车或结束标志字符,可利用ch=cin.get()来接受结束字符;

getline(cin,str)

1、全局变量,与cin.getline()不同,与gets()相似,接收的字符串长度不受限制;不同之处是可以自定义结束符,直到你输入了回车或者你自己设定的结束符,str这个字符串才会被输出。

2、配合while(getline(cin,str)),可以一直接受字符串和换行符,直到遇到EOF和ctrl+z才会终止,故比较适合读取大量多行字符串;(这是因为你的回车只会终止getline()函数的读入操作。getline()函数终止后又进行while()判断(即判断输入流是否有效,你的输入流当然有效,满足条件),所以又运行getline()函数,导致程序永远跳不出循环。)

gets()

1、C中的函数。可以无限读取,不会判断上限,以回车结束读取,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出;

2、与getline函数功能相似,但是不能自定义结束符,只能换行符结束;

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值