当前位置:编程学习 > C/C++ >>

关于C++的cin.get()的问题

它怎么用呢?特点是什么?和一般的cin>>a,有什么区别吗?我的树上没有仔细写不好意思。
答案:楼主你好!!!

cin.get()函数本身就是输入一个字符的。比如:

char s[20];
cin.get(s);就会出现编译错误,

改成;char s;
cin.get(s);
就对了
关于cin.get()与cin>>s;的区别就是前者不会忽略空格,回车键,、会把他们当作字符了处理,如:cin.get(s);要是输入:空格 a,那里,字符变量s的值就是一个空格,字符a则会存在缓冲区了。要是用cin>>s,它会忽略空格、、、直到有字符输入为止。如;输入:空格 a,那么字符变量s的值就是‘a’了。

举例:
1、cin>>



用法1:最基本,也是最常用的用法,输入一个数字:

#include <iostream>
using namespace std;
main ()
{
int a,b;
cin>>a>>b;
cout<<a+b<<endl;
}

输入:2[回车]3[回车]
输出:5

用法2:接受一个字符串,遇“空格”、“TAB”、“回车”都结束

#include <iostream>
using namespace std;
main ()
{
char a[20];
cin>>a;
cout<<a<<endl;
}

输入:jkljkljkl
输出:jkljkljkl

输入:jkljkl jkljkl
//遇空格结束
输出:jkljkl

2、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(字符数组名,接收字符数目)的不足.

这个我还不知道怎么用,知道的前辈请赐教;

3、cin.getline()
// 接受一个字符串,可以接收空格并输出

#include <iostream>
using namespace std;
main ()
{
char m[20];
cin.getline(m,5);
cout<<m<<endl;
}

输入:jkljkljkl
输出:jklj

接受5个字符到m中,其中最后一个为'\\0',所以只看到4个字符输出;

如果把5改成20:
输入:jkljkljkl
输出:jkljkljkl

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

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

上一个:谁能给些C\C++的练习题
下一个:那位大哥帮忙注释一段代码 c++的

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,