关于C++中cin()和cin.get()的用法,问题如下13
发布网友
发布时间:2023-10-12 22:18
我来回答
共4个回答
热心网友
时间:2024-11-26 19:27
用来接收你输入的字符串的下一个字符达到统计字符的数目的目的。
cin.get(ch)这条语句每次只能接受一个字符。而你开始时候是输入一段字符串。而第一个cin.get(ch)只接受了你输入的字符串的第一个字符,后面的字符都还在缓冲区里面没有取出。而循环体里面的cin.get(ch)不会再要求你输入字符就是因为缓冲区里面还有字符没有取出,自然就取缓冲区的下一个字符,直到取完为止。
热心网友
时间:2024-11-26 19:28
get()是对象cin的一个成员函数, 用于吸收字符, 这里可以吸收掉回车。 否则回车也会被存储到字符数组a里面。 这就相当于C程序中的getchar(), 懂了吗?
这里用一个getchar()和cin.get()效果一样, 不信你可以试一下。。追问我看到百度上有说cin>>x;的cin函数是丢弃回车的,也就是输入x之后并没有在输入流保存回车,那为什么还要用get()吸收回车?
追答是的, 但是如果先回车, 想要再输入字符串的话, 程序就终止了对吧。。 你没有理解gets的用法, 如果遇到回车, gets就起不到应有的作用了。。
你可以把a输出, 自己试一下有什么区别。。。 这段代码应该是某本书上的对吧, 作为一段程序,
健壮性是非常重要的。。
热心网友
时间:2024-11-26 19:28
int get();
istream &get( char &ch );
istream &get( char *buffer, streamsize num );
istream &get( char *buffer, streamsize num, char delim );
istream &get( streambuf &buffer );
istream &get( streambuf &buffer, char delim );
get()函数被用于输入流,和以下这些:
读入一个字符并返回它的值,
读入一个字符并把它存储在ch,
读取字符到buffer直到num - 1个字符被读入, 或者碰到EOF或换行标志,
读取字符到buffer直到已读入num - 1 个字符,或者碰到EOF或delim(delim直到下一次不会被读取),
读取字符到buffer中,直到碰到换行或EOF, 或是读取字符到buffer中,直到碰到换行,EOF或delim。
(相反, delim直到下一个get()不会被读取 ).
你的两个程序,在每个cout<<"what is your first name? \n";前加上cin.get();吃掉之前的回车换行字符即可!
热心网友
时间:2024-11-26 19:29
用这个函数拿掉回车追问cin>>x;的cin函数是丢弃回车的,也就是输入x之后并没有在输入流保存回车,那为什么还要拿掉回车?
追答所谓的丢弃回车就是不将回车 这个字符放到输入流里面,也就是说 回车这个字符就成了等待接受的一个字符,如果你直接gets 也就直接被捕获接收了。
那么cin.get就是来处理掉这个待接收的回车。