【发布时间】:2018-07-07 16:13:33
【问题描述】:
我正在编写一个程序,它使用getline(我必须使用getline)获取用户输入并将其吐回到屏幕上。它还应该再次询问输入是否为空白。我在处理具有多个换行符和制表符的输入时遇到问题。
我已经让它几乎可以工作,但它循环了几次,我不知道如何修复它/做得更好。代码如下:
string name;
while(true)
{
cout << "What is your name?" << endl;
getline(cin, name, '\n');
if (!name.empty())
{
break;
}
}
cout << "Hello " << name << "!" << endl;
return 0;
这是输入:
\n
\n
John\n
Doe\n
我想要的输出应该是这样的:
What is your name?
Hello John Doe!
我的输出如下所示:
What is your name?
What is your name?
What is your name?
Hello John!
【问题讨论】:
-
'\n'无论如何都是std::getline()的默认分隔符。 -
至于你的问题:为什么不写另一个循环来收集输入?
-
我不知道该怎么做,它将如何收集输入?
-
并对其进行了编辑以匹配输出内容,谢谢!
-
首先你需要指定一个条件,来决定何时完成名称。您的修改仍然不准确。
标签: c++ getline istream removing-whitespace