2016-05-07 35 views
-5

我是C++新手,正在使用C++的基本用戶名和密碼程序,它使用矢量。目前,我被困在一個函數,該函數檢查一個空格的密碼字符串,如果發生這種情況,則返回true。我試圖實現isspace(),但無法弄清楚它是否正在檢查我的字符串「密碼」與否。提前感謝您花時間以任何方式進行審查和提供幫助。如果我缺乏任何重要信息,我很抱歉。檢查空間的「密碼」字符串,如果找到則返回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,其他它返回false。

試用筆和紙。

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

循環的內容說如果字符不是空格,則返回false。所以當它遇到一個非空格字符時,它會返回,不管有多少個字符被檢查過。

刪除else語句:

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

相關問題