(3条消息) cin、cin.get()、cin.getline()、getline()的区别_啊大1号的博客-优快云博客_cingetline
目录
4.cin.ignore(5, 'a'); 函数将不断从缓冲区中取一个字符丢弃,直到丢弃的字符数达到5或者读取的字符为'a'。
1、cin>>
根据cin>>sth 中sth的变量类型读取数据,这里变量类型可以为int,float,char,char*,string等诸多类型。这一输入操作,在遇到结束符(Space、Tab、Enter)就结束,且对于结束符\n,并不保存到变量中。注意:最后一个enter也在缓冲区。
在第二次调用cin>>str之前通过cin.sync()来清空输入缓冲区,或者用cin.get()去读取空格。
2、cin.get(字符数组名,接收长度,结束符)
其中结束符意味着遇到该符号结束字符串读取,默认为enter,读取的字符个数最多为(长度 - 1),因为最后一个为'\0'。要注意的是,cin.get(字符数组名,接收长度,结束符)操作遇到结束符停止读取,但并不会将结束符从缓冲区丢弃。
cin.get()和cin.get(char)作用一样。cin.get( ),注意此时没有参数,可用于舍弃输入流中的不需要的字符,或者舍弃回车,弥补cin.get(字符数组名,字符数目,结束符)的不足。
还有一点需要注意的是,cin.get(字符数组名,接收长度,结束符),当一开始第一个输入字符(即前面无其他任何字符)就遇到结束符情况下,将不会正常输出,但缓冲区中依然有该结束符。需要清楚错误标志,但结束符一样在缓冲区
3、cin.getline(字符数组名,接收长度,结束符)
cin.getline()当输入超长时,会引起cin函数的错误,后面的cin操作将不再执行。
cin.get()每次读取一整行并把由Enter键生成的换行符留在输入队列中,然而cin.getline()每次读取一整行并把由Enter键生成的换行符抛弃
getline(istream is,string str,自定义结束符)
cin.getline()当输入超长时,会引起cin函数的错误,后面的cin操作将不再执行。
4、getline和cin.getline区别
getline输出过长直接结束程序
cin.getline()当输入超长时,会引起cin函数的错误,后面的cin操作将不再执行。