猿问

您好,想请教几个iostream函数功能 !麻烦大佬帮忙看看!

get(),getline()和ignore()
读文本数据时
1.cin.get(string,max,delimeter)遇到回车会停吗?
2.如果cin.getline(string,max)和cin.getline(string,max,delimeter)在读文本时,遇到的第一个字符就是回车,会出现什么情况?string里会是空吗?
3.ignore()函数怎么用?
比如cin.ignore(20,'\n');是怎么作用的?20是什么意思?
自己看不明白,高手请指导...

慕哥6287543
浏览 281回答 2
2回答

慕雪6442864

1.如果在delimeter参数声明为回车,则遇到回车时会停,或者在读到最大长度时会停止2.若第一个字符就是回车,则字符串为空.可以cin.get()跳过第一个回车符3,20是指跳过多少个字符,cin.ignore(20,'\n')作用是指跳过20个字符或者遇到回车时停止(此时可能跳过字符少于20个)

Cats萌萌

我们可以对get(str,Size),与getline(str,Size)的区别做一个总结:分为三种情况来看:1)输入的字符串不超过限定大小get(str,Size):读取所有字符,遇到'\n'时止,并且将'\n'留在输入缓冲区中,其将被下一个读取输入的操作捕获,影响该输入处理;getline(str,Size):读取所有字符,遇到'\n'时止,并且将'\n'直接从输入缓冲区中删除掉,不会影响下面的输入处理。2)输入的字符数超出限定的大小get(str,Size):读取Size-1个字符,并将str[Size-1]置为'\0',然后将剩余字符(包括'\n')留在输入缓冲区中,这些字符将被下一个读取输入的操作捕获,影响该输入处理;getline(str,Size):读取Size-1个字符,并将str[Size-1]置为'\0',剩余字符(包括'\n')留在输入缓冲区中,随即设置cin实效位(即if(!cin)的判断为真),关闭输入。其后的所有输入都无法得到任何东西,当然也无法得到输入缓冲区中剩余的字符串。但如果用clear()重置cin,其后的输入便可用并会得到遗留在输入缓冲区中的字符。3)输入一个空行(即直接回车)get(str,Size):str将得到'\0',并设置cin实效位,关闭输入,但回车依然留在输入缓冲区中,因此如果我们用clear()重置cin,其下一个读取输入的操作将捕获'\n';getline(str,Size):str将得到'\0',并将'\n'删除掉,不置实效位,不关闭输入。所以对于cin.getline来说空行是合法的输入,且不会影响下面的输入处理。cin.ignore(20,'\n')作用是指跳过20个字符或者遇到回车时停止对于这3个函数,默认的结束字符都是回车。
随时随地看视频慕课网APP
我要回答