C++中cin.get()的具体用法

cin.get()的具体用法有哪几种?请举个例子看看.希望自己真正知道这个用法的才回答这个问题,因为我已经在百度知道里看过其他的相关问题了,请不要到百度知道里复一些东西到... cin.get()的具体用法有哪几种?请举个例子看看.希望自己真正知道这个用法的才回答这个问题,因为我已经在百度知道里看过其他的相关问题了,请不要到百度知道里复一些东西到这里来.

另外,在百度知道里有个问题我弄不清楚,希望能解释下.谢谢.

问题:下列程序中,为什么第二次cin。get()不能用??

#include<iostream.h>
void main()
{
char ch;
ch=cin.get();//读入一个大写字符
ch=ch+32;//通过ascii码把大写的字母转化为小写的 /*-------小写的ascii码比大写的大32;
cout<<ch<<endl;
char num;
num=cin.get();//读入字符类型的
int a;
a=num-48;
cout<<a<<endl;

}

最佳答案:回答者:mhaha

你运行时想输入A,会按A 回车,cin.get()会把回车('\n')当作字符(num)读了,然后``````
char ch;
cin>>ch;
char num;
cin>>num;
这样(>>)会跳过回车符或者空格
展开
 我来答
百度网友abb421f
推荐于2019-08-25 · TA获得超过3233个赞
知道答主
回答量:12
采纳率:0%
帮助的人:8912
展开全部

用法有以下几种:

1、cin.get()

用法1: cin.get(字符变量名)可以用来接收字符

#include <iostream> 
using namespace std; 
main () 

char ch; 
ch=cin.get();               //或者cin.get(ch); 
cout<<ch<<endl; 
}

输入:jljkljkl 
输出:j

用法2:cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格

#include <iostream> 
using namespace std; 
main () 

char a[20]; 
cin.get(a,20); 
cout<<a<<endl; 
}

输入:jkl jkl jkl 
输出:jkl jkl jkl

输入:abcdeabcdeabcdeabcdeabcde (输入25个字符) 
输出:abcdeabcdeabcdeabcd              (接收19个字符+1个'\0')

用法3:cin.get(无参数)没有参数主要是用于舍弃输入流中的不需要的字符,或者舍弃回车,弥补cin.get(字符数组名,接收字符数目)的不足。

扩展资料:

get()函数比较灵活,有3种常用的重载形式:

1、和put()对应的形式:ifstream &get(char &ch);功能是从流中读取一个字符,结果保存在引用ch中,如果到文件尾,返回空字符。如file2.get(x);表示从文件中读取一个字符,并把读取的字符保存在x中。

2、重载形式的原型是: int get();这种形式是从流中返回一个字符,如果到达文件尾,返回EOF,如x=file2.get();和上例功能是一样的。

3、原型是:ifstream &get(char *buf,int num,char delim='\n');这种形式把字符读入由 buf 指向的数组,直到读入了 num 个字符或遇到了由 delim 指定的字符,如果没使用 delim 这个参数,将使用缺省值换行符'\n'。例如:

file2.get(str1,127,'A'); //从文件中读取字符到字符串str1,当遇到字符'A'或读取了127个字符时终止。

4、从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以,cin>>x;就表示从标准输入流中读取一个指定类型(即变量x的类型)的数据。

5、在C++中,对文件的操作是通过stream的子类fstream(file stream)来实现的,所以,要用这种方式操作文件,就必须加入头文件fstream.h。下面就把此类的文件操作过程一一道来。

参考资料来源:IT专家网-C++

撒飒飒953
推荐于2019-08-06 · TA获得超过1068个赞
知道答主
回答量:16
采纳率:0%
帮助的人:2368
展开全部

cin.get()是保留回车在输入流队列中的,

而cin是丢弃回车的。

ch=cin.get();是第一次输入,因为是刚开始,所以没有回车保留在输入流的队列中。这时你输入一个字符,然后回车。get()收到回车或空格或制表符就停止输入了、此时,输入流队列中留下一个回车。

num=cin.get();这是第二次输入。因为第一次用了get,所以输入流队列中有个回车。则get()接受这个回车。又因为get()收到回车或空格或制表符就停止输入。

所以这一次的输入就是一个回车,
可以num=cin.get();之前把回车给弄了。你应该想到了。就用cin.get(),把第一次输入留下的回车给弄走.则num=cin.get()就可以正常了。

扩展资料

cin运行机制解析:

C++的cin究竟确切含义是什么呢?很多初学者第一次接触cin时,当程序运行到cin指令时,程序自动会中断,然后等待用户从键盘中输入信息。只有当用户输入完成,按下回车之后,程序才会继续往下运行。

这个过程很容易让初学者产生误会,认为cin就是调用电脑键盘进行输入的指令。也是因为这个错误的认知,会引起一系列的误会。例如上文中图4,虽然程序中有三次cin,但其实我们只要从键盘里输入一次,就可以完成全部输入工作,不一定非得分开三次从键盘输入。

cin本质和其它C++变量一样,它也是一个变量名,它被定义在iostream文件里。因此,我们要使用cin功能时,就必须导入头文件<iostream>。在C++中,变量名通常实质是代表着一段内存区域,

同样的道理,cin这个变量其实也是映射到一段内存区域里面,我们可以认为cin实际上代表着一段内存缓冲区,这段缓冲区的作用是,用于缓存从键盘输入的信息。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
兔丞飞
高粉答主

推荐于2019-10-11 · 专注娱乐 专注娱乐 专注娱乐
兔丞飞
采纳数:25 获赞数:19893

向TA提问 私信TA
展开全部

该函数有多种重载形式,分为四种格式:无参,一参数,二参数,三个参数。常用的的函数原型如下:

1,int cin.get();

2,istream& cin.get(char& var);

3,istream& get ( char* s, streamsize n );

4,istream& get ( char* s,  streamsize  n, char delim )。

其中streamsize 在VC++中被定义为long long型。另外,还有两个重载形式不怎么使用,就不详述了,函数原型如下:

1,istream& get ( streambuf& sb);

2,istream& get ( streambuf& sb, char delim );

cin.get读取一个字符,可以使用cin.get或者cin.get(var),示例代码如下:

#include <iostream>

using namespace std;

int main()

{

char a;

char b;

a=cin.get();

cin.get(b);

cout<<a<<b<<endl;

system("pause");

return 0;

}

扩展资料

cin.getline()与他相比,比较粗一些。举例:先定义字符数组 char a[20];cin.getline(a,20);即把数组的内容读入进来。它通过换行符来确定行尾,但不保存换行符。

cin.get()则将换行符留在输入队列中。举例:假设我们两次调用cin.get():cin.get(a,20);cin.get(b,20);

如果不借助帮助,cin.get(b,20)无法读入,因为换行符留在了输入队列,第二次调用时读的第一个字符便是换行符,所以无法读入新的内容。同样的规则,借助不带参数的cin.get();在上例中的两句之间加入cin.get();用它吃掉换行符。

参考资料:百度百科 - C++

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小舅舅有点帅
推荐于2019-11-02 · TA获得超过1万个赞
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部

cin.get()是保留回车在输入流队列中的,

而cin是丢弃回车的。

ch=cin.get();是第一次输入,因为是刚开始,所以没有回车保留在输入流的队列中。这时你输入一个字符,然后回车。get()收到回车或空格或制表符就停止输入了、此时,输入流队列中留下一个回车。

num=cin.get();这是第二次输入。因为第一次用了get,所以输入流队列中有个回车。则get()接受这个回车。又因为get()收到回车或空格或制表符就停止输入。

所以这一次的输入就是一个回车,可以num=cin.get();之前把回车给弄了。你应该想到了。就用cin.get(),把第一次输入留下的回车给弄走.则num=cin.get()就可以正常了。

扩展资料

cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格

#include <iostream> 

using namespace std; 

main () 

char a[20]; 

cin.get(a,20); 

cout<<a<<endl; 

}

输入:jkl jkl jkl 

输出:jkl jkl jkl

输入:abcdeabcdeabcdeabcdeabcde (输入25个字符) 

输出:abcdeabcdeabcdeabcd   (接收19个字符+1个'\0')

参考资料:百度百科 - cin

百度百科 - C++



本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ec167ac34
推荐于2017-09-27 · TA获得超过1788个赞
知道小有建树答主
回答量:1312
采纳率:0%
帮助的人:1153万
展开全部
cin.get()是保留回车在输入流队列中的.而cin是丢弃回车的.
ch=cin.get();是第一次输入,因为是刚开始,所以没有回车保留在输入流的队列中.这时你输入一个字符,然后回车.get()收到回车或空格或制表符就停止输入了.此时,输入流队列中留下一个回车.
num=cin.get();这是第二次输入.因为第一次用了get,所以输入流队列中有个回车.则get()接受这个回车.又因为get()收到回车或空格或制表符就停止输入.所以这一次的输入就是一个回车.
可以num=cin.get();之前把回车给弄了.你应该想到了.就用cin.get();把第一次输入留下的回车给弄走.则num=cin.get()就可以正常了.

<C++ primer plus>说得很详细你去看看就会明白了.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(8)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式