getline() in C++

getline() in C++

本文关键字:C++ in getline      更新时间:2023-10-16

为什么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

显示输出:


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;
}