我有一个函数(下面)检查用户的无效字符的名字,它工作正常。
while(run)
{
size_t positionFirstName = userFirstName.find_first_of(invalidCharacter, 0, sizeof(invalidCharacter));
if (positionFirstName != string::npos)
{
cout << "Please only use letters. Please re-enter your first name." << endl;
cin >> userFirstName;
}
else
{
run = false;
}
}
我还想检查用户的名字是否不短于3个字符。 我已经尝试了几次,并且可以让程序运行第一个函数,但如果我放入另一个函数来检查名称长度,它似乎跳过它。有什么想法吗?
答案 0 :(得分:0)
这是一个稍微调整过的方法:
cout << "Please enter your first name." << endl;
while( cin >> userFirstName )
{
size_t positionFirstName = userFirstName.find_first_of(invalidCharacter, 0, sizeof(invalidCharacter));
if (positionFirstName != string::npos)
{
cout << "Please only use letters.";
}
else if( userFirstName.size() < 3 )
{
cout << "Name must be at least 3 characters long."
}
else {
break;
}
cout << " Please re-enter your first name." << endl;
}
请注意,我避免重复,但只打印错误并在一个地方处理输入。