0

我有一个函数(如下),可以检查用户的名字中是否存在无效字符,并且工作正常。

    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 个字符。我已经尝试了几次,并且可以让程序运行第一个函数,但是如果我放入另一个函数来检查名称长度,它似乎会跳过它。有任何想法吗?

4

1 回答 1

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;
}

请注意,我避免了重复,而是只打印错误并在一个地方处理输入。

于 2013-09-27T21:56:42.237 回答