【问题标题】:Read string with spaces in C++ [duplicate]在C ++中读取带空格的字符串[重复]
【发布时间】:2018-07-19 06:12:36
【问题描述】:

在这个 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

输出:

这怎么可能?请帮忙。我哪里错了?

【问题讨论】:

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


    【解决方案1】:

    你读了一个数字,然后读了一行。仔细想想发生了什么,换行符不是数字的一部分。因此,如果输入是 123 换行符,则读取数字 123,然后 getline 读取换行符。下一行的内容根本没有被阅读。

    【讨论】:

    • 我已编辑问题,存在一些格式问题。请立即查看。
    • @Saarthak 好的,但答案是一样的。
    • 您的错误是认为每次读取都从下一行开始。这不是真的。
    • 在数字后使用 cin.ignore() 提供所需的解决方案:)
    • 好的,现在在 123 空格换行符上尝试您的解决方案。 ignore() 只忽略单个字符。完整的解决方案在链接的答案中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-18
    • 1970-01-01
    相关资源
    最近更新 更多