2016-11-16 19 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文字以下であるかどうかを確認します。あなたはまた、パスワードが必要と他の属性をチェックするために、上記のセクションに多くのコードを追加することができ

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

ような何かをするだろう(私は10個の文字の後に入力を遮断する方法を知っていません)。

出典:学校での個人的な楽しみのための15ヶ月間のコーディング。もっと良い方法がある場合や、10文字後に入力を途切れる方法がわかっている場合は、自分の答えを追加してください。

+0

大文字を確認する別の方法はありますか?あなたがやったやり方で、私のコンパイラにいくつかのエラーが出ています(私はMacを使用しています) –

+0

@HassanKamara私は間違って何かを残しました、私はそれを修正しました –

+0

私はこれら2つの条件を統合するのに問題があります私の考えは、これらの条件のいずれかに違反したときに別のエラーメッセージを表示することですが、今のところ、両方のエラーメッセージを表示しています( 1つはパスワードが6文字未満で、大文字は含まれていません) –

0

std :: stringを使用しているので、後でpassword.sizeユーザー入力を取得し、サイズがの範囲内にあるかどうかを確認します。10.そうでない場合は、ユーザーに別のパスワードを再照会するだけです。これはwhileループで最もうまくいくでしょう。 はここで、より高いレベルからいくつかのコードの例です:あなたはすでにユーザ名と同じようなことをやっている

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

ので、私はあなたがパスワードかについて質問されることを意図した場合にビットがオンで混乱していました。

0

概念レベルでは、文字列入力を受け取り、長さと他のプロパティ(つまり、大文字が1つ)を確認し、それを後続の操作に使用できます。以下の基準を満たしていない場合は、ユーザーに情報の再入力を依頼してください。

関連する問題