如何处理包含空格的 cin 的用户输入?

How does one process a user input with cin that contains whitespace?

本文关键字:cin 用户 输入 空格 包含 何处理 处理      更新时间:2023-10-16

我刚刚开始学习C++,在我的程序中遇到了一个小错误:

#include <iostream>
using namespace std;
int main()  {
string name;
int number;
cout << "Hello!n";
cout << "Please enter your name: " << flush;
cin >> name;
cout << "Please enter a whole number: " << flush;
cin >> number;
cout << "Thank you for your cooperation, " + name + ". We will be contacting you again soon in regards to your order of " << number << " puppies.n";
}

当第一次要求用户输入时尝试输入多个单词(例如,No One(时,程序将输出以下内容:

请输入一个整数:感谢您的合作,没有。我们将很快就您的 0 只小狗订单再次与您联系。

我在其他地方读到cin对所有空格的处理方式相同(因此空格的处理方式与返回相同(,我如何避免这个问题?

尝试使用 getline http://www.cplusplus.com/reference/string/string/getline/这有什么帮助吗?

#include <iostream>
#include <string>
int main() {
std::string name;
int number;
std::cout << "Hello!n";
std::cout << "Please enter your name: " << std::flush;
getline(std::cin, name);
std::cout << "Please enter a whole number: " << std::flush;
std::cin >> number;
std::cout << "Thank you for your cooperation, " + name + ". We will be contacting 
you again soon in regards to your order of " << number << " puppies.n";
return 0; 
}