2010-04-29 6 views
0

Программирование начинающего здесь. Я пытаюсь разрешить пользователю вводить свое имя, firstName middleName lastName в одной строке в консоли (например, «John Jane Doe»). Я хочу сделать middleName необязательным. Поэтому, если пользователь входит в «John Doe», он сохраняет только строки первого и последнего имени. Если пользователь вводит «John Jane Doe», он сохранит все три.C++ cin whitespace вопрос

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

cin >> firstName >> middleName >> lastName; 

тогда я понял, что если пользователь выбирает опустить их отчества и входит в «John Doe» консоль будет просто ждать пользователю ввести третью строку ... Я знаю, что могу сделать это с помощью одной большой строки и разбить ее на два или три, но разве нет более простого способа сделать это с помощью трех строк, как указано выше?

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

Спасибо заранее.

+0

Yeap, fixed. Благодаря! – buddyfox

ответ

5

Используйте 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); 
+0

Поскольку buddyfox - новичок, я угрожаю удалить свой голос, потому что вы опустили префикс 'std ::'. ':)' – sbi

+1

@sbi: lol, на 'std ::' мы отличаемся. Я предпочитаю не пугать новичков и не мучить себя; v). – Potatoswatter

+0

@sbi: Спасибо за исправление. –

 Смежные вопросы

  • Нет связанных вопросов^_^