Пока на самом деле не отвечаю на ваш вопрос ...
Идиоматический способ в C ++ - использовать getline . Это случайность истории, которая не делает его частью интерфейса iostream
напрямую, но на самом деле это функция , используемая для ввода.
Бесстыдная заглушка с сайта:
// getline with strings
#include <iostream>
#include <string>
int main () {
std::string str;
std::cout << "Please enter full name: ";
getline (std::cin,str);
std::cout << "Thank you, " << str << ".\n";
}
Основным преимуществом getline
в этой версии является то, что он читает до тех пор, пока не встретит символ конца строки.
Вы можете указать свой собственный набор символов "конца строки" в перегрузке, принимая третий параметр, например, чтобы он останавливался на запятых или двоеточиях.