首页 > 解决方案 > 为什么循环在第一次迭代中跳过输入?

问题描述

#include <iostream>
#include <bits/stdc++.h>
using namespace std;

主功能

int main(){
    long long int T;
    string s;
    cin >> T;
    while(T--){
        getline(cin, s);
        cout << s << endl;
    }
}

while循环在第一次迭代时跳过输入 只打印空行

我想在每次迭代时传递字符串作为输入,但在第一次迭代时循环跳过输入行。

标签: c++stringwhile-loopcingetline

解决方案


cin >> T读到数字的末尾而不是行尾。

因此,getline(cin, s);您首先阅读数字后的其余部分。

您可以cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');在 之后立即调用cin >> T;以忽略该行中剩余的所有内容。


推荐阅读