浅析cin.getline,cin.get,cin.ignore,cin.clear用法

本文详细介绍了C++中cin.getline()、cin.ignore()及cin.clear()等输入流操作的功能与用法,包括如何读取字符串、清理输入缓冲区以及处理输入错误。

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

    cin.getline()方法连续地从用户终端接受字符,并将字符存入字符型数组message中,直到输入了(maxchars-1)个字符(第maxchars个字符用来存储字符串结尾的NULL字符'\0')或者接受到了回车为止,这终端键入回车键产生一个换行'\n',它被 cin.getline()认为是行输入结尾cin.getline()获得的字符(除了换行符外)被存储到message数组中在返回之前,cin.getline()函数在存储的这些字符后面添加一个NULL字符'\0'。

     cin.ignore(5,'c')   的是从输入流(cin)中提取字符,提取的字符被忽略(ignore),不被使用每抛弃一个字符,它都要计数和比较字符:如果计数值达到5或者被抛弃的字符是'c',则cin.ignore()函数执行终止;否则,它继续等待  它的一个常用功能就是用来清除以回车结束的输入缓冲区的内容,消除上一次输入对下一次输入的影响比如可以这么用:cin.ignore (1024, '\n');,通常把第一个参数设置得足够大,这样实际上总是只有第二个参数'\n'起作用,所以这一句就是把回车(包括回车)之前的所以字符从输入缓冲(流)中清除出去。

     cin.clear用法如果输入发生错误发生,那么流状态既被标记为错误,你必须清除这些错误状态,以使你的程序能正确适当地继续运行要清除错误状态,需使用clear()函数此函数带一个参数,它是你将要设为当前状态的标志值,只要将ios::goodbit作为实参。

     GCC4.3编译器是比较符合标准的。测试发现,在使用字符数组而不是string类来描述字符串的情况下,cin.getline()和cin.get()的区别主要在于两点:cin.getline()在读完一行之后会自动把换行符从输入缓冲区里抹掉,而cin.get()不会。而在遇到空行的时候, cin.getline()会真的读入一个空字符串,cin.get()会报错。
这两者的区别是可以加以利用的,比如通过检查 cin.get()的failbit来用空行结束某个输入循环。一般来讲,用cin.get()可能可以更细致地实现一些功能并且便于调试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值