简单的getline和cin忽略了第一个字符

问题描述 投票:-4回答:1

我试图将这些输出分开,但第二个输出的第一个字符被忽略。

输入:

1

1 2 3

输出:

(空间)2 3

预期产量......

1 2 3

#include <iostream>

using namespace std;


int main()
{
    string a; cin >> a;
    string s; cin >> s;
    getline(cin, s);
    cout << s;
}
c++ cin cout getline
1个回答
0
投票

该程序产生所需的输出

#include <iostream>

using namespace std;

int main()
{
    string a; cin >> a;
    cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    string s;
    getline(cin, s);
    cout << s;
}

cin.ignore()的调用移动到下一行,因为你仍然在cin >> a;之后的前一行。你可以做像string dummy; getline(cin, dummy);这样的事情,但ignore避免使用不必要的变量。

© www.soinside.com 2019 - 2024. All rights reserved.