C++ cin 空格问题
Posted
技术标签:
【中文标题】C++ cin 空格问题【英文标题】:C++ cin whitespace question 【发布时间】:2010-04-29 06:58:26 【问题描述】:这里是编程新手。我试图允许用户在控制台的一行中输入他们的名字,firstName middleName lastName(例如“John Jane Doe”)。我想将 middleName 设为可选。因此,如果用户输入“John Doe”,它只会保存名字和姓氏字符串。如果用户输入“John Jane Doe”,它将保存所有三个。
我打算用这个:
cin >> firstName >> middleName >> lastName;
然后我意识到如果用户选择省略他们的中间名并输入“John Doe”,控制台将等待用户输入第三个字符串......我知道我可以用一个大字符串来完成这个并打破它分为两个或三个,但没有更简单的方法来使用上面的三个字符串吗?
我觉得我在这里遗漏了一些简单的东西......
提前致谢。
【问题讨论】:
【参考方案1】:使用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 );
【讨论】:
由于 buddyfox 是新手,我威胁要删除我的赞成票,因为您省略了std::
前缀。 :)
@sbi: 大声笑,std::
我们不同。我不想吓唬新手,也不想折磨自己;v)。
感谢您的快速回答!这与我的想法相似,但我发布了这个问题,因为我仍然想知道这一切的简单性......我正在看一本有相关问题的教科书,上面写着“提示:你可能想要使用三个字符串变量而不是一个大字符串变量。您可能会发现不使用 getline 更容易。知道他们在做什么吗?
@buddyfox:不。据我所知getline
是识别换行符的唯一简单方法。我不认为它包括答案?
不幸的是它没有。它只是提示使用三个变量,而不像我在原始问题中尝试做的那样使用 getline...以上是关于C++ cin 空格问题的主要内容,如果未能解决你的问题,请参考以下文章
c++利用cin.get()输入带空格的一串数据【追加悬赏】