C++ cin空白问题

0 c++ string whitespace cin

在这里编程新手.我试图允许用户在控制台的一行中输入他们的名字firstName middleName lastName(例如"John Jane Doe").我想让middleName可选.因此,如果用户输入"John Doe",它只保存名字和姓氏字符串.如果用户输入"John Jane Doe",它将保存所有三个.

我打算用这个:

cin >> firstName >> middleName >> lastName;
Run Code Online (Sandbox Code Playgroud)

然后我意识到,如果用户选择省略他们的中间名并输入"John Doe",控制台将等待用户输入第三个字符串...我知道我可以通过一个大字符串完成此操作并将其分解为两个或三个,但有没有一个更简单的方法来做三个像上面的字符串?

我觉得我在这里错过了一些简单的东西......

提前致谢.

Pot*_*ter 5

使用getline然后使用a解析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 );
Run Code Online (Sandbox Code Playgroud)