2016-11-16 669 views
-4

我想創建一個允許用戶創建密碼和用戶名的程序。但是,密碼必須介於6到10個字符之間。我將如何限制字符輸入?另外,如果我想要密碼包含大寫字母呢?C++ - 限制字符串長度

下面就一起來看看該計劃到目前爲止給你什麼,我試圖做一個想法(注:我知道這個程序本身顯然沒有完成,但我只是想給你一個視覺):

#include <iostream> 
#include <string> 

int main(int argc, const char * argv[]) { 
    // insert code here... 

    std::cout << "--------------------------------------------------------------\n"; 
    std::cout << "   Welcome to the ECE!! Password Proram!\n"; 
    std::cout << "Username rules: must be 5-10 characters long with no space\n"; 
    std::cout << "Password rules: must be 6+ characters long\n"; 
    std::cout << "Must contain one uppercase letter and one number but no space\n"; 
    std::cout << "--------------------------------------------------------------\n"; 

    //Let's get our password! 
    std::string username; 
    std::string password; 
    const int 

    //use a do while loop for input validation 
    do {  
     std::cout << "Enter your username: "; 
     std::cin >> username;      //add input validation    
    } while(); 

    std::cout << "Enter your password:"; 
    std::cin >> password;  
    return 0; 
} 
+0

閱讀說明書! – HazemGomaa

回答

0

要限制字符輸入,您需要檢查輸入長度是否在6到10個字符之間(含)。 (我不知道的一種方式後,10個字符,切斷輸入),你會不喜歡

start: // A label to direct where the program should go when goto is called. 
while(password.length() > 10 || password.length() < 5) 
{ 
    std::cout << "The password must be between 5 and 10 characters inclusive." << endl; 
    std::cin >> password; 
} 
// To check if there is a capital letter 
bool foundUpperLetter = false; 
for(int i = 0; i < password.length(); i++) 
{ 
    if(foundUpperLetter == true) 
     break; 
    if('A' <= password[i] && password[i] <= 'Z') 
     foundUpperLetter = true; 
} 
if(!foundUpperLetter) 
{ 
    std::cout << "You did not include an uppercase letter in your input. Please try again." << endl; 
    goto start; // Will make the program go back to label start. 
} 

的東西你也可以多代碼添加到上面的部分以檢查密碼需要其他屬性。

來源:爲學校和個人享受編碼15個月。如果有更好的方法來做某些事情,或者如果你知道在10個字符後切斷輸入的方法,請添加自己的答案。

+0

是否有另一種檢查大寫字母的方法?你的方式,它給我的編譯器一些錯誤(我使用的是mac) –

+0

@HassanKamara我不小心把東西丟了,我修好了 –

+0

我在整合這兩個條件時遇到了問題(第一個檢查是確保它在5-10個字符,然後檢查它是否有大寫字母。我的想法是打印單獨的錯誤消息,當違反這些條件中的任何一種時,但我現在擁有它的方式,它正在打印兩個錯誤消息(一個表示密碼少於6個字符,並且沒有大寫字母) –

0

由於您使用的是std :: string,因此可以使用password.size()獲取用戶輸入並檢查大小是否在10的範圍內。10.如果不是,則只需重新向用戶查詢另一個密碼即可。這最好在一個while循環中完成。 下面是從更高的層次一些代碼的例子:

do{ 
    std::cout << "Enter your password:"; 
    std::cin >> password; 
}while (password.size() < 6 || password.size() > 10) 

你已經做與用戶名類似的事情,所以我有點糊塗。如果你的意思是問關於密碼或者沒有。

0

在概念層面上:您可以接受字符串輸入,檢查長度和其他屬性(即包含一個大寫字母),將其用於進一步的操作。如果它不符合以下標準,請讓用戶重新輸入信息。