2016-08-12 12 views
1

私は、電話番号が有効で、電話番号が "04"で10文字の長さであればプログラムがtrueを返すかどうかをチェックするプログラムを作成しています。文字列がint型でないかどうかを確認する関数

bool Is_Valid(string phone) { 
    if (phone.length() == 10 && phone.substr(0,2) == "04" || phone.substr(0,2) == "08" && Is_Int(phone)) { 
     return true; 
    } else { 
     return false; 
    } 
} 

と、これはメインプログラムコードである:ここでは、文字列をunsigned int型であるかどうかをチェックする関数のコードされています。電話番号が有効であれば

bool Is_Int(string phone) { 
    if (all_of(phone.begin(), phone.end(), ::isdigit)) { 
     return true; 
    } else { 
     return false; 
    } 
} 

ここでは、コードはチェックです。

int main() 
{ 
    cout << "Enter Phone Number: "; 
    string PhoneNumber; 
    getline(cin, PhoneNumber); 
    if (Is_Valid(PhoneNumber)) { 
     cout << "authenticated" << endl; 
    } 
    return 0; 
} 

エラーは、私が "04abcdefgh" と入力した場合、それは

+0

Theresのエラーなし0

  • 文字でなければならない、それはちょうど私が10である何かを入力すると認証します「04」と「08」で始まります。文字列に文字が入っていても –

  • 答えて

    2

    を認証プリントするということです2つの括弧を作ります。 &&||前に評価され、phone.length() == 10 && phone.substr(0,2) == "04"関数はに低減することができ、コメントで述べたようrakete1111

    bool Is_Valid(string phone) { 
        if (phone.length() == 10 && (phone.substr(0,2) == "04" || phone.substr(0,2) == "08") && Is_Int(phone)) { 
         return true; 
        } else { 
         return false; 
        } 
    } 
    

    trueの場合、それゆえ場合はtrueです:

    bool Is_Valid(string phone) { 
        return (phone.length() == 10 && (phone.substr(0,2) == "04" || phone.substr(0,2) == "08") && Is_Int(phone)); 
    } 
    
    +0

    Thanks @ Rakete1111 –

    0

    多分、正規表現がありますはっきり?

    bool Is_Valid(string phone) { 
        return QRegularExpression(R"(^0(4|8)\d{8}$)").match(phone).hasMatch(); 
    } 
    
    1. 文字は多分4または8
    2. 8桁終わり
    関連する問題