gpt4 book ai didi

c++ - 使用 getline 忽略用户输入中的制表符和换行符

转载 作者:行者123 更新时间:2023-11-28 04:49:40 24 4
gpt4 key购买 nike

我正在编写一个程序,它使用 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!

最佳答案

我可能不理解您的要求,但如果您只想在不同的行中收集用户的名字和姓氏(同时忽略任何选项卡),您可以这样做。

#include <iostream>
#include <string>
#include <algorithm>

int main()
{
std::string first;
std::string last;
std::cout << "What is your name?\n";
while (first.empty())
{
std::getline(std::cin, first);
// remove all tabs from input
first.erase(std::remove(first.begin(), first.end(), '\t'), first.end());
}
while (last.empty())
{
std::getline(std::cin, last);
// remove all tabs from input
last.erase(std::remove(last.begin(), last.end(), '\t'), last.end());
}
std::string name = first + " " + last;
std::cout << "Hello, " << name << "!\n";
return 0;
}

您的用户将被允许按回车键和 Tab 键,直到他们神志不清为止。在 std::getline() 获得一些非制表符输入之前,发生多少换行符或制表符并不重要。从你的问题来看,这似乎是你想要的。您可以找到有关我使用 std::remove here 删除制表符的 STL 算法的更多信息。 .

关于c++ - 使用 getline 忽略用户输入中的制表符和换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48493256/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com