c++中cin的用法


cin

cin将键盘的输入插入到输入流中,忽略空白和换行符。在需要用到bool值的地方,比如while,istream类能将cin转换为bool值,如果输入没有出现错误,则为true,否则为false,比如
while (!(cin >> number))
而while (cin)可以用来判断最近一次输入是否正确,比如要求输入的类型是int,输入了字母等类型,则为false。
如果输入的类型错误,程序会陷入死循环,而导致无法继续输入,这个时候输入状态从0变为其他状态了,也就是被阻塞了。那该怎么办呢?
我们可以使用cin.clear()将输入状态重置为0,并且用cin.ignore()将输入缓冲区中的内容清除,同时提一下,cin.ignore()函数中有两个参数,分别为数值型的a 和 字符型的 ch ,即cin.ignore( a, ch )。它表示从输入流 cin 中提取字符,提取的字符被忽略,不被使用。而每抛弃一个字符,它都要进行计数和比较字符:如果计数值达到 a 或者被抛弃的字符是 ch ,则cin.ignore() 函数执行终止;否则,它继续等待。它的一个常用功能就是用来清除以回车结束的输入缓冲区的内容,消除上一次输入对下一次输入的影响。例如可以这么用,cin.ignore(1024, '\n'),通常把第一个参数设置得足够大,这样实际上是为了只有第二个参数 '\n' 起作用,所以这一句就是把回车(包括回车)之前的所以字符从输入缓冲流中清除出去。
如果默认不给参数的话,默认参数为cin.ignore(1, EOF),即把EOF前的1个字符清掉,没有遇到EOF就清掉一个字符然后结束。

cin.get()

该函数读取一个字符,并且返回存储到一个变量中。该函数也可以输入两个变量,一个是字符数组,一个是输入字符的个数,当读取到指定的个数或者遇到换行符,停止读取,它会将换行符留在输入队列,因此第二次调用时第一个字符就是换行符,因此要用一个cin.get()来跳过换行符。这种情况它会返回一个cin对象。所以可以使用cin.get().get()的形式。

cin.get(ch)

该函数读取一个字符存储到变量ch中,并且返回一个cin对象。该函数与cin不同的地方在于它可以读取空格、回车和制表符等空白。

cin.getline()

它和cin.get()一样,都是接受两个参数,但是它与get不同的地方在于,它遇到换行符时,并没有将它留在输入序列中,而是丢弃掉。

getline(cin,str)

该函数是string类的函数,读取一行字符,存储到字符串类型str中。

声明:技术分享爱好者|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - c++中cin的用法


Carpe Diem and Do What I Like