C++ 中的 getline()
getline() in C++
为什么 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 中,如果在它之前有一个 space,它会被忽略,但 std::getline
不会忽略 space,所以我们使用 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;
}
为什么 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 中,如果在它之前有一个 space,它会被忽略,但 std::getline
不会忽略 space,所以我们使用 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;
}