这里编程新手。我试图允许用户在控制台的一行中输入他们的名字firstName middleName lastName(例如“John Jane Doe”)。我想让middleName可选。因此,如果用户输入“John Doe”,它只保存名字和姓氏字符串。如果用户输入“John Jane Doe”,它将保存所有三个。
我打算用这个:
cin >> firstName >> middleName >> lastName;
然后我意识到,如果用户选择省略他们的中间名并输入“John Doe”,控制台将等待用户输入第三个字符串......我知道我可以通过一个大字符串完成此操作并打破它可以分为两个或三个,但是不是有一个更简单的方法来处理上面的三个字符串吗?
我觉得我在这里缺少一些简单的东西......
提前致谢。
答案 0 :(得分: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 );