2012-04-21 13 views
-3

linuxでは、与えられた入力がuint8_tかuint16_tかuint32_tであることを確認するには?与えられた入力をそれらとどのように比較するのですか?入力形式のバリデーション

+3

私たちはどのようなインプットについて話していますか?コンソール、ファイル、GUIを介して...? – Raveline

+0

ファイルから。たとえば、ファイルから入力745を読み取って、それが有効かどうかをチェックします。 –

+0

これを少し絞り込む必要があります。上記の多くの数字があります。 – juanchopanza

答えて

0
uint16_t value = boost::lexical_cast<uint16_t>(str); 

入力文字列を変換できない場合、bad_cast例外がスローされます。

+0

これをチェックする他の方法はありますか? –

+0

はい。それはプログラミングであり、それを行うには百から千の方法があります。 –

0

あなたが入力することで、ファイルまたはコンソールから読み取る数を意味する場合には、ちょうどこのようなif文を実行します。

#define max_uint8 (1<<8) - 1 
    #define max_uint16 (1<<16) - 1 
    #define max_uint32 (1<<32) - 1 


    if(input > max_uint32) { 
     // then it is greater than 32 bits 
    } else if (input > max_uint16) { 
     // then it is uint32 
    } else if (input > max_uint8) { 
     // then it is uint16 
    } else { 
     // then it is uint8 
    } 

注:私はあなたの入力は以上の32ビットになることはありませんと仮定しそうでなければ、これをチェックする必要があります。

+0

入力が32ビットより大きい場合はどうなりますか? –

+0

@Umarniazあなたは単にこれをチェックする必要があります。あなたの数字を64ビット整数(長いロング)で読み、[(1 << 32) - 1]の値を1つ追加してif条件を調整します。私は上でそれを編集した。 – iBrAaAa

関連する問題