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

2024-11-23 21:17:45
推荐回答(5个)
回答1:

用法有以下几种:

1、cin.get()

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

#include  
using namespace std; 
main () 

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

输入:jljkljkl 
输出:j

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

#include  
using namespace std; 
main () 

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

输入: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++

回答2:

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功能时,就必须导入头文件。在C++中,变量名通常实质是代表着一段内存区域,

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

回答3:

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

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

using namespace std;

int main()

{

char a;

char b;

a=cin.get();

cin.get(b);

cout<

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++

回答4:

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

而cin是丢弃回车的。

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

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

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

扩展资料

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

#include  

using namespace std; 

main () 

char a[20]; 

cin.get(a,20); 

cout<

}

输入:jkl jkl jkl 

输出:jkl jkl jkl

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

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

参考资料:百度百科 - cin

百度百科 - C++



回答5:

cin.get()是保留回车在输入流队列中的.而cin是丢弃回车的.
ch=cin.get();是第一次输入,因为是刚开始,所以没有回车保留在输入流的队列中.这时你输入一个字符,然后回车.get()收到回车或空格或制表符就停止输入了.此时,输入流队列中留下一个回车.
num=cin.get();这是第二次输入.因为第一次用了get,所以输入流队列中有个回车.则get()接受这个回车.又因为get()收到回车或空格或制表符就停止输入.所以这一次的输入就是一个回车.
可以num=cin.get();之前把回车给弄了.你应该想到了.就用cin.get();把第一次输入留下的回车给弄走.则num=cin.get()就可以正常了.

说得很详细你去看看就会明白了.