2016-05-07 3 views
-5

Я новичок в C++ и работаю над базовым именем пользователя и программой passsword в C++, использующей векторы. В настоящее время я застрял на функции, которая проверяет строку пароля для пробела и возвращает true, если это происходит. Я пытался реализовать isspace(), но не мог понять, проверяет ли мой пароль «пароль» или нет. Заранее благодарим вас за то, что нашли время, чтобы просмотреть и помочь в любом случае. Приносим извинения заранее, если у меня отсутствует какая-либо ключевая информация.Проверка строки «password» для пробела и возврата true, если найдено: C++

bool checkSpaces (string password) { 
     for (int i = 0; i < password.length(); i++) { 
      if (isspace(i)) { 
       return true; 
      } else { 
       return false; 
     } 
    } 
+3

ты серьезно? вы проверяете, является ли индекс цикла символом пробела? Вы должны действительно проверить код, который вы пишете, прежде чем публиковать здесь ... – NoImaginationGuy

+2

'return (password.find_first_of ('')! = Std :: string :: npos);' – Cyclonecode

+1

@osnapitzkindle Этот вид побеждает цель публикации и запроса для помощи. Очевидно, я испытываю трудности и прошу совета. Если бы я это понял и «проверил» мой код перед публикацией, мне не нужно было бы публиковать ... – eknack87

ответ

2

Кстати, я изменил свой isspace() использовать строку пароля, а не индекс цикла. Это, наверное, опечатка.

Поскольку у вас есть предложение else, цикл выполняется только один раз, либо первый символ является пробелом, и он возвращает true, else возвращает false.

Попробуйте с ручкой и бумагой.

bool checkSpaces (string password) { 
     for (int i = 0; i < password.length(); i++) { 
      if (isspace(password[i])) { 
       return true; 
      } 
/* --> */ else { 
       return false; 
     } 
    } 

Содержимое цикла указывает, что если символ не является пробелом, верните значение false. Поэтому, когда он попадает в непространственный символ, он возвращается, независимо от того, сколько символов было проверено.

Удалите другое заявление:

bool checkSpaces (string password) { 
     for (int i = 0; i < password.length(); i++) { 
      if (isspace(password[i])) { 
       return true; 
      } 
     } 
     // If the for loop terminates, and gets here, 
     // there were no spaces. 
     return false; 
    } 
+0

Благодарим вас за то, что вы объяснили это любезно и не взяли мой пост в шутку. В моей голове я думал, что это не будет правильно выполняться с ложным возвратом, и я все еще учусь. – eknack87

+0

Если ответ будет полезен, нажмите на галочку. –

+0

Самое полезное, проверено! – eknack87