前后行混合输入数字和字符串导致的问题(详解cin与cin.getlin和cin.get)

上述是书中的示例程序:

1、第一个问题  cin函数

以下是我写的程序:

遇到的错误:在混合输入的时候,会发现,

但是由于之前输入字符串,在执行到cin >> age的时候 无法输入,会直接跳过这段代码。

例如:

明明有输入的语句,但是却无法执行?

 错误原因:

cin使用空白(空格、制表符和换行符)来确认字符串的结束位置

cin函数在输入的时候 一遇到空格就会认为输入已经结束,输入流会自动的将空格后的内容填入到下个个cin函数所要写的变量中。

 解决办法:将cin函数替换成cin.getline()或者是cin.get函数,两者均可读取一整行程序。

 

2、第二个问题 cin.getline()函数

此时,我将cin函数换成cin.getline()函数

错误原因:

cin >> f_name 为什么?

第1个 cin 函数 输入流 在键盘输入的时候,输入流最后会将换行符留在输入流末尾。

在第2个cin函数 输入流的时候,会直接将第1个cin函数的末尾的换行符直接输入。

解决办法:将cin 换成 cin.getline()

详解cin 函数 与 cin.getline()函数和cin.get函数

1、cin用法

2、cin.getline()用法

cin.getline()

用法:接收一个字符串,可以接收空格并输出

延伸:
        1、cin.getline()实际上有三个参数,cin.getline(接收字符串的变量,接收字符个数,结束字符)
        2、当第三个参数省略时,系统默认为'\0'

3、getline()用法

getline()

用法:接收一个字符串,可以接收空格并输出

注意:

1、cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数

2、当同时使用cin>>,getline()时,需要注意的是,在cin>>输入流完成之后,getline()之前,需要通过

  1. str="\n";

  2. getline(cin,str);

的方式将回车符作为输入流cin以清除缓存,如果不这样做的话,在控制台上就不会出现getline()的输入提示,而直接跳过,因为程序默认地将之前的变量作为输入流

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值