cin和getline连用遇到的一些问题

赛码网输入输出

最近本Tu在投实习,然后前两天做了美团的实习机试,美团机试是在赛码网上进行的,然后由于跟平时写letecode不一样,需要自己写输入输出。

然后就去练习了一下,代码如下:

#include <iostream>
#include <string>

using namespace std;

int main () {
  int n;
  cin >> n;
  string input;
  while(n > 0) {
    --n;
    getline(cin, input);
    cout << n << input << endl;
  }
  
  
  
  return 0;
}

遇到了以下问题:cin获取了上面案例中的3后,再用getline,会获取到第一行(第一行没有内容了)

 于是引发了我的思考:cin遇到换行符会停止,但是不能进入到下一行,于是用getline还是会获取到第一行这个空行。

于是我用了另外两种思路,一是直接用cin去获取下面的字符串(用getline 是为了避免下面行中有空格的情况,本题没有这种情况,于是可以直接用cin获取)。二是用getline+stringstream来获取3的值。

#include <iostream>
#include <string>

using namespace std;

int main () {
  int n;
  cin >> n;
  string input;
  while(n > 0) {
    --n;
    cin >> input;
    cout << n << input << endl;
  }
  
  
  
  return 0;
}

 

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

int main () {
  int n;
  string s;
  getline(cin, s);
  stringstream str(s);
  str >> n;
  string input;
  while(n > 0) {
    --n;
    getline(cin, input);
    cout << n << input << endl;
  }
  return 0;
}

 如果有hxd遇到了同样的问题,可以按照自己的需求用上述两种办法,如果有其他解决办法,也请给我留言,让我学习一下=-=。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

TuTuTu030

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

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

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

打赏作者

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

抵扣说明:

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

余额充值