c++:用户输入的读取

1、前言

主要就cin和getline进行讲解
参考:
1. C++输入输出(cin和cout)
2. C++ getline函数用法详解

2、cin

cin读取数据是从第一个非空白字符开始到下一个空白字符结束,或者文件结束符(end-of-file,EOF)。什么是空白字符,它包括了(Space、Tab、Enter),也即是每次的cin都是一次读取,每次遇到(Space、Tab、Enter)或者EOF就结束。

举几个例子:

  • 空格
//用户输入:big egg
cin>>a>>b	//则a=big,b=egg
  • Tab
//用户输入:big egg
cin>>a>>b	//则a=big,b=egg
  • Enter
//用户输入:
//big
//egg
cin>>a>>b	//则a=big,b=egg

一个易错点:
cin是从第一个非空白字符开始的,也就是如果你想输入两行字符串,但是第一行可能为空,那么你的操作就是第一次输入:直接回车;第二次输入:输入字符串后回车。如果使用一下代码来接受,则会出错:

string a,b;
cin>>a>>b;

我们知道第一行是空白字符串,根据cin的读取规则是不会读取的,cin>>a会继续等待用户输入,当用户输入第二行时,其字符串内容会被cin>>a读取。此时用户两行都输入完毕了,但是cin>>b没有被使用,但程序会一直卡在cin>>b等待输入,造成了问题。即你想要的是:
a=“”
b=“your input context”
而根据代码接受的是:
a=“your input context”
b= //在这里一直等待你的输入

如何解决?使用getline()

3、getline()

函数可读取整行,包括Space、Tab、Enter,并将其存储在字符串对象中,使用方法为:

string a,b;
getline(cin, a);
getline(cin, b);

用户输入后的结果:
a=“”
b=“your input context”

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是一个对称矩阵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值