【C++】cin、cin.get()、cin.getline()、getline()的区别

(3条消息) cin、cin.get()、cin.getline()、getline()的区别_啊大1号的博客-CSDN博客_cingetline

目录

1、cin>>

2、cin.get(字符数组名,接收长度,结束符)

3、cin.getline(字符数组名,接收长度,结束符)

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操作将不再执行。

5.cin.ignore(5, 'a'); 函数将不断从缓冲区中取一个字符丢弃,直到丢弃的字符数达到5或者读取的字符为'a'。

猜你喜欢

转载自blog.csdn.net/weever7/article/details/127648699