输入整数后输入整行字符串的解决方法

  • Post author:
  • Post category:其他




输入整数后输入整行字符串的解决方法

当输入内容是整数,然后后面需要输入整行字符串的时候,处理起来会非常麻烦,并且我自己在比赛当中也遇到过好几次,这次好好整理一下方法。

先说一下我自己的错误情况,在如下输入的时候:

2
4
hello worl d
hello cpp ++a

输入内容是两个整数,然后两个整行的字符串,这种情况,我们如果用string和cin正常情况下是需要用到getline的:

signed main(){
    int a,b;
    string t;
    string s;
    cin>>a>>b;
    getline(cin,s);
    getline(cin,t);
    cout<<a<<" "<<b<<"\n";
    cout<<s<<"\n"<<t;
    return 0;
}

这样的话输出如下:

2 4

hello worl d

我们会发现4后面的回车会作为第一个字符串的结束标志。所以我们要想办法先将这个回车去掉,那我使用了getchar():

signed main(){
    int a,b;
    string t;
    string s;
    cin>>a>>b;
    getchar();
    getline(cin,s);
    getline(cin,t);
    cout<<a<<" "<<b<<"\n";
    cout<<s<<"\n"<<t;
    return 0;
}

但是这个有时候会出现一些问题,有时会出现毛病,这个也是一直困扰我的问题。

那么这个问题如果解决呢,最好是使用cin.get():

signed main(){
    int a,b;
    string t;
    string s;
    cin>>a>>b;
    cin.get();
    getline(cin,s);
    getline(cin,t);
    cout<<a<<" "<<b<<"\n";
    cout<<s<<"\n"<<t;
    return 0;
}

输出:

2 4
hello worl d
hello cpp ++a



版权声明:本文为qq_45985728原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。