区分cin,cin.get(),cin.getline(),getline

1.cin
用法一:最基本的输入
cin>>a>>b;
输入:2[回车]3[回车]
输出:5
注意:>>是会过滤掉不可见字符(如空格回车,TAB等)
cin>>noskipws>>input[i]//不想略过空白字符,就使用noskipws流控制
用法二:接受一个字符串,遇“空格”、“TAB”、“回车”都结束
char a[20];
cin>>a;
输入:jijijj jij
输出:jijijj

string s[4]
cin>>s[0]>>s[1]>>s[2]


2.cin.get()
用法一:cin.get(字符变量名)可以用来接收字符
char ch;
ch=cin.get();或是cin.get(ch)
输入:adssd
输出:a
用法二:cin.get(字符数组名,接受字符数目)用来接收一行字符串,可以接收空格
char a[20];
cin.get(a,20);
输入:aaaaaaaaaaaaaaaaaaaaaa(输入大于20个字符)
输出:aaaaaaaaaaaaaaa(接收19个字符+1个'\0')
用法三:cin.get(无参数)没有参数主要是用于舍弃输入流中的不需要的字符,或者舍弃回车,弥补cin.get(字符数组名,接受字符数目)的不足
/稍后补充


3.cin.getline()接收一个字符串,可以接收空格并输出
char m[20]
cin.getline(m,5)
输入:asdfghj
输出:asdf
最后一个是'\0'
延申:cin.getline()有三个参数,最后一个参数是结束字符,系统默认'\n'
用在多维数组中,也可以用cin.getline()
char m[3][20]
cin.getline(m[i],20)//


int n;
cin>>n;
char s[n][20];
for(int i=0;i<n;i++)
{
 cin.getline(s[i],20,'\n');
}

若n=3,只能输入2行,为什么?会在输入n的时候吃掉一行?而且是第0行,就是说没有s[0]


4.getline()接收一个字符串,可以接收空格并输出,需要包含#include<string>
string str;
getline(cin,str)

和cin.getline()类似,但是cin.getline()属于istream流,而getline()属于string流,是两个不一样的函数

5.接收字符
char ch;
ch=getchar();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值