Как обработать ввод пользователя с помощью cin, содержащего пробелы? - PullRequest
0 голосов
/ 26 мая 2020

Я только начинаю изучать 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 обрабатывает все пробелы одинаково (поэтому пробел будет обрабатываться так же, как и возврат), как я могу избежать этой проблемы?

1 Ответ

0 голосов
/ 26 мая 2020

Попробуйте использовать 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; 
}
...