2013-10-11 18 views

答えて

10

21.5数値変換

unsigned long stoul(const string& str, size_t *idx = 0, int base = 10);

効果: ... strtoul(str.c_str(), ptr, base) [s]の呼び出しがあれば...、変換結果を返します。

例外: ... out_of_range変換された値が戻り値の表現可能な値の範囲外の場合。

ここで、「変換された値」は、strtoulが返す値です。もちろんunsigned longのタイプであるため、返品タイプstoulの表記可能な値の範囲外であることはできません。unsigned longです。それはintを返しますがlongを返すstrtolを使用しているため

は、私の知る限り、唯一stoiout_of_rangeを投げることができます。

さらに、C標準でstrtoulと指定されている場合は、文字列"-4"を受け入れ、-(unsigned long)4に等しい値を返す必要があります。なぜそれがこのように指定されたのか分かりません。

+3

ありがとう、それは迷惑です – Kal

関連する問題