gpt4 book ai didi

C++如何检测空格

转载 作者:太空宇宙 更新时间:2023-11-04 16:19:11 24 4
gpt4 key购买 nike

我正在创建一个允许用户输入用户名和密码的程序。问题是,当系统提示“Enter userName:”并且我按下回车键时,它会打印出“Name cannot contain a blank”

但是如果我按下几个空格键并按下回车键然后将其设为空白字段,它会跳过提示用户输入密码而不打印出“名称不能包含空白”并提示用户输入用户名再次。

我应该如何更改我的代码以确保它仍然会提示用户再次输入用户名,即使我按下空格键并按下回车键?请指教。谢谢

代码

string userName=" ";
string password;
cout << "Enter UserName:";

while (getline(cin, userName)) {
if (userName.empty()) {

cout << "Name cannot contain a blank."<< endl;
cout << "Enter userName:";
userName = userName;
//throw errorMsg;
}

if(!userName.empty()) {
cout << "Enter Password";
}
}

最佳答案

用户名验证并非易事,原因有很多。您不想从事制造您“认为”用户想要输入的内容的业务,同时很明显您希望避免对正在发生的事情进行可能很长的验证无效。

最后,我怀疑您可以简单地获取潜在客户条目,去掉所有空格,如果有任何剩余,则提交原始条目 进行验证。不要放弃验证用户可能 想要键入的内容的业务。即

"\t\t   "

应该是重新提示的理由,而

"John Smith"
"\t WillJohnson "
"Gary"

都应该逐字提交,让筹码落在可能的地方。

也就是说,

bool isValidUserName(std::string name)
{
name.erase(std::remove_if(name.begin(), name.end(),
[](char c){ return std::isspace(static_cast<unsigned char>(c));}), name.end());
return !name.empty();
}

应该为你做那件事。示例如下:

int main()
{
std::cout << std::boolalpha << isValidUserName("\t \t ") << std::endl;
std::cout << std::boolalpha << isValidUserName("\t Will Johnson ") << std::endl;
return 0;
}

输出

false
true

关于C++如何检测空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19206177/

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