2016-11-16 628 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

在概念层面上:您可以接受字符串输入,检查长度和其他属性(即包含一个大写字母),将其用于进一步的操作。如果它不符合以下标准,请让用户重新输入信息。