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&,std::string&)
的工作方式与cin>>var
的工作方式不同。
当您使用cin>>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 中的多个分叉进程中获得一致
如何在不使用 getline() 的情况下接受不同行中的整数输入值?