linuxでは、与えられた入力がuint8_tかuint16_tかuint32_tであることを確認するには?与えられた入力をそれらとどのように比較するのですか?入力形式のバリデーション
答えて
uint16_t value = boost::lexical_cast<uint16_t>(str);
入力文字列を変換できない場合、bad_cast例外がスローされます。
これをチェックする他の方法はありますか? –
はい。それはプログラミングであり、それを行うには百から千の方法があります。 –
あなたが入力することで、ファイルまたはコンソールから読み取る数を意味する場合には、ちょうどこのような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ビットになることはありませんと仮定しそうでなければ、これをチェックする必要があります。
入力が32ビットより大きい場合はどうなりますか? –
@Umarniazあなたは単にこれをチェックする必要があります。あなたの数字を64ビット整数(長いロング)で読み、[(1 << 32) - 1]の値を1つ追加してif条件を調整します。私は上でそれを編集した。 – iBrAaAa
私たちはどのようなインプットについて話していますか?コンソール、ファイル、GUIを介して...? – Raveline
ファイルから。たとえば、ファイルから入力745を読み取って、それが有効かどうかをチェックします。 –
これを少し絞り込む必要があります。上記の多くの数字があります。 – juanchopanza