在C ++中读取带空格的字符串

时间:2018-07-19 06:12:36

标签: c++ c++11 visual-c++ c++14

在此C ++代码中:

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

int main()
{
    string S;
    getline(cin,S);
    cout<<S;

    return 0;
}

它将打印带有空格的字符串,例如:

输入:

abc def

输出:

abc def

但是,在此代码中:

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

int main()
{
    int n;
    cin>>n;
    string S;
    getline(cin,S);
    cout<<S;

    return 0;
}

它不打印任何输出,例如:

输入:

1
abc def

输出:

那怎么可能?请帮忙。我要去哪里错了?

1 个答案:

答案 0 :(得分:2)

您先读一个数字,然后读一行。仔细考虑发生了什么,换行符不是数字的一部分。因此,如果输入的是123换行符,则读取数字123,然后getline读取换行符。完全没有阅读下一行中的任何内容。