AcWing
  • 首页
  • 题库
  • 题解
  • 分享
  • 问答
  • 活动
  • 应用
  • 吐槽
  • 登录/注册

cin和getline()搭配使用时中间要加上getchar()

作者: 作者的头像   无味 ,  2021-01-13 18:45:12 ,  阅读 28


0


以这个题为例:POJ2030汉字统计
AC代码:

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
    int n;
    string s;
    cin>>n;
    getchar();
    while(n--)
    {
        int cnt=0;
        getline(cin,s);
        for(int i=0;i<s.size();++i)
            if(!(s[i]<=127&&s[i]>=0))
                cnt++;

        cout<<cnt<<endl;
    }
    return 0;
}

但是第一次在cin>>n后没有加getchar()
所以在调试样例时:
QQ截图20210113183354.jpg
为什么输入2按回车后立马输出个0,正常不应该是换行等待输入吗?这是为啥呢?、
因为输入2后的回车被while()中第一个getline给读进去了,所以输出的是0.
所以在cin>>n后加上个getchar()来读掉2后边的回车。
那为什么while()中的第一个getline()后边的getline()不读前边输入字符的回车呢?
这是因为,getline()在读入的时候会把末尾的回车读到字符串里边,然后再给处理掉.

所以:

cin和getline()搭配使用时中间要加上getchar()

0 评论

你确定删除吗?

© 2018-2021 AcWing 版权所有  |  京ICP备17053197号-1
联系我们  |  常见问题
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标
请输入绑定的邮箱地址
请输入注册信息