c++ cin,get与getline的灵活使用

之前在学习到相关的内容的时候,发过一篇相关的文章,但是最近使用发现仍然不能很好地区别与灵活使用者三种输入方式,所以在这里分方面做一些区分和应用场景举例。

之前的文章

一、区分

输入字符
什么时候执行,可以输入的数据,冲突处理,剩下的怎么办

char ch;
cin >> ch;//回车后才会执行操作;会忽略空格制表符与换行符等;如果第一个输入的与变量类型冲突,会造成cin为false,cin.fail()和cin.eof()变成true;剩下的会留在输入序列中
cin.get(ch);//与下面的基本相同,不同的是这一个是一个输入流类,而下一个会返回一个int值表示输入的ASCII码;
ch = cin.get();//立即执行;会接受输入的每个字符,包括空格等;如果冲突会造ch = EOF(-1),
ch = getline(cin, 1);//回车之后才会执行;对读取输入的每个字符;;剩下的留在输入序列中

输入字符串

string str;
cin >> str;//会将换行符留在输入序列中
cin.get();//不能赋值给string型变量
getline(cin, str);//注意,getline是string库中的方法,程序开头要有相应的头文件
cin.getline;//不能获取string类数据

char cha[10];
cin >>//不能使用cin将获取的内容赋值给字符串数组
cin.get(cha, 100);//100表示最大接收量,剩下的会留在输入序列中
getline(cin, cha, '\n');//\n表示输入结束标志,当遇到\n时停止输入,将前面的包括\n赋值;会将换行符留在输入序列中
cin.getline(c, 100);//会丢弃换行符

二、应用场景
cin获取基本数据类型
cin.get()读取一个字符,它可以读取空格等,但是不能读取换行符
cin.getling()获取整行数据,它可以规定获取的字数,会将末尾的换行符丢弃
getline()获取整行数据,它可以赋值给string类,会将换行符留在输入序列中

1、获取单个数据

cin >> a;
cin.get();//使用cin输入时会将换行符留在输入序列,所以需要清除

2、获取多个数据

while (cin >> a >> b) {
		c = a + b;
	}
//输入时使用空格将两个数据隔开,按回车之后就会依次读取进入两个变量中

2、单个字符依次输入并对其中的某些字符进行判定

while (ch = cin.get()) {
		if (ch == -1)
			break;
		i++;
	}
//会一直持续读取字符并进行操作,直到发生类型冲突,ch = cin.get()返回false,或者是break

3、获取整行字符

cin.getline(cha, 30);//使用cin.getline(a, 30)读取整行数据,可以规定字数,更加安全,并丢弃换行符
getline(cin, cha/str, '/n')//使用getline()读取整行数据,不可以规定字数,但是可以使用string型变量,也比较安全,会将换行符留在输入序列中
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值