C ++ cin пробельный вопрос - PullRequest
       17

C ++ cin пробельный вопрос

0 голосов
/ 29 апреля 2010

Программирование новичка здесь. Я пытаюсь разрешить пользователю вводить свое имя firstName middleName lastName в одной строке консоли (например, «Джон Джейн Доу»). Я хочу сделать middleName необязательным. Поэтому, если пользователь вводит «Джон Доу», он сохраняет только строки имени и фамилии. Если пользователь вводит «Джон Джейн Доу», он сохраняет все три.

Я собирался использовать это:

cin >> firstName >> middleName >> lastName;

тогда я понял, что если пользователь решит опустить свое второе имя и введет "Джон Доу", консоль будет просто ждать, пока пользователь введет третью строку ... Я знаю, что я могу сделать это с одной большой строкой и разрывом это делится на две или три, но разве нет более простого способа сделать это с тремя строками, как указано выше?

Я чувствую, что упускаю что-то простое здесь ...

Заранее спасибо.

1 Ответ

5 голосов
/ 29 апреля 2010

Используйте getline, а затем анализируйте с помощью stringstream.

#include <sstream>

string line;
getline( cin, line );
istringstream parse( line );

string first, middle, last;
parse >> first >> middle >> last;
if ( last.empty() ) swap( middle, last );
...