2013-09-27 2 views
0

У меня есть функция (ниже), которая проверяет имя пользователя для недопустимых символов и работает отлично.C++ Проверьте имя пользователя не слишком короткое

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

} 

Я также хочу проверить, что имя пользователя не менее трех символов. Я пробовал несколько раз и могу получить программу для запуска первой функции, но если я добавлю другую функцию для проверки длины имени, она, похоже, пропустит ее. Есть идеи?

+1

Не могли бы вы показать, что вы пробовали? –

+0

Вы знаете о 'size()' или 'length()'? –

+10

Меня зовут Эд, приятно познакомиться. Хотел бы ты, чтобы ты сказал моей матери, что мое имя было недействительным 30 лет назад, могло бы сдержать меня от разочарования. –

ответ

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

Обратите внимание, что я избежал повторения, но печать только ошибки и обработки ввода в одном месте.

Смежные вопросы