关于循环中使用cin.getline()函数第二次及以后读取字符串总是丢失第一个字符的问题

如题,近来在刷字符串相关机试题时,因为要从键盘读入字符串进行判断,故采用cin.getline()函数来获取键盘写入的字符串,多次循环输入判断。

若开始输入字符串之前要输入一个数据代表输入多少组字符串。则在cin.getline()之前要有以下1或2的声明,否则会将输入的组数也当做字符串读入。
1 //scanf("%c", &c);
2 //getchar();
使用如上声明加cin.getline()函数时,可以正常输入组数,读取字符串;但发现若有多组数据,从第二组开始,每次读取会丢失第一个字符,这是因为:当同时使用cin >>,getline()时,需要注意的是,在cin >> 输入流完成之后,getline()之前,需要通过下面的两种方法作为输入流cin以清除缓存,如果不这样做的话,在控制台上就不会出现getline()的输入提示,而直接跳过,因为程序默认地将之前的变量作为输入流。

方法一:str="\n"; getline(cin,str);
方法二:cin.clear(); cin.sync();
  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值