C ++中的getline()

Posted

技术标签:

【中文标题】C ++中的getline()【英文标题】:getline() in C++ [duplicate] 【发布时间】:2020-01-09 10:55:36 【问题描述】:

为什么 getline 函数不在这里接受输入?

#include <iostream>
#include <string>
using namespace std;

int main() 
    unsigned n , m ;
    cin >> n >> m;

    string set;
    getline(cin, set);
    cout<<set<<endl;
    return 0;

提供的输入:

1 5
Hello World

显示的输出:


【问题讨论】:

这能回答你的问题吗? Using getline(cin, s) after cin 【参考方案1】:

std::getline(istream&amp;,std::string&amp;) 的工作方式与cin&gt;&gt;var 的工作方式不同。 当您使用cin&gt;&gt;var 时,正确的输入会被正确地吸收到var 中,如果在它之前有一个空格,它会被忽略,但std::getline 不会忽略空格,所以我们使用std::cin.ignore() 来忽略\n。如果你不忽略它,字符串会遇到它,然后不会吸收你的行,因为std::getline() 在遇到\n 时停止。

#include <iostream>
    #include <string>
    using namespace std;

    int main() 
        unsigned n , m ;
        cin >> n >> m;

        string set;
        cin.ignore();
        getline(cin, set);
        cout<<set<<endl;
        return 0;
    

【讨论】:

你能解释一下@anonymous 吗??

以上是关于C ++中的getline()的主要内容,如果未能解决你的问题,请参考以下文章

C++ --- getline 和 cin ignore () . 删除输出字符串中的第一个字符

C++ Getline 并不总是在 Linux 中的多个分叉进程中获得一致

C++中怎么逐行读取数据

如何在不使用 getline() 的情况下接受不同行中的整数输入值?

关于 getline(cin, string) 的 C++ 快速问题

如何从 C 中的控制台读取一行?