strtoul、_strtoul_l、wcstoul、_wcstoul_l
更新 : 2007 年 11 月
文字列を unsigned long 型の値に変換します。
unsigned long strtoul(
const char *nptr,
char **endptr,
int base
);
unsigned long _strtoul_l(
const char *nptr,
char **endptr,
int base,
_locale_t locale
);
unsigned long wcstoul(
const wchar_t *nptr,
wchar_t **endptr,
int base
);
unsigned long _wcstoul_l(
const wchar_t *nptr,
wchar_t **endptr,
int base,
_locale_t locale
);
パラメータ
nptr
NULL で終わる変換対象の文字列。endptr
スキャンの終了位置を示す文字へのポインタ。base
使用する基数。locale
使用するロケール。
戻り値
strtoul 関数は、変換された値があればそれを返し、オーバーフローの場合は ULONG_MAX を返します。変換を実行できなかった場合は、strtoul 関数は 0 を返します。wcstoul 関数の戻り値は、strtoul 関数の戻り値と同じです。どちらの関数も、オーバーフローまたはアンダーフローが発生すると、グローバル変数 errno に ERANGE を設定します。
戻り値の詳細については、「_doserrno、errno、_sys_errlist、および _sys_nerr」を参照してください。
解説
これらの各関数は、入力文字列 nptr を unsigned long 型に変換します。
strtoul 関数は、数値の一部として認識できない文字を最初に見つけた時点で、文字列 nptr の読み取りを終了します。文字列の終端の null 文字 (\0)、または base 以上の数値文字が最初に出現した位置でもスキャンを停止します。ロケールの LC_NUMERIC カテゴリ設定によって、nptr に含まれる基数文字の認識を決定します。詳細については、「setlocale」 を参照してください。strtoul および wcstoul では現在のロケールを使用します。_strtoul_l と _wcstoul_l は、現在のロケールではなく渡されるロケールを使用するという点を除き、同じです。詳細については、「ロケール」を参照してください。
endptr が NULL 以外の場合は、スキャンを停止させた文字へのポインタを endptr が指す位置に格納します。変換できなかった場合 (有効な数字が見つからなかった場合、または無効な base を指定した場合) は、nptr の値を endptr が指す位置に格納します。
wcstoul 関数は、strtoul 関数のワイド文字バージョンで、nptr 引数はワイド文字列です。それ以外の動作については、これらの関数は同じです。
汎用テキスト ルーチンのマップ
TCHAR.H のルーチン |
_UNICODE および _MBCS が未定義の場合 |
_MBCS が定義されている場合 |
_UNICODE が定義されている場合 |
---|---|---|---|
_tcstoul |
strtoul |
strtoul |
wcstoul |
_tcstoul_l |
strtoul_l |
_strtoul_l |
_wcstoul_l |
strtoul は、nptr が次の形式の文字列を指すものと想定します。
[whitespace] [{+ | –}] [0 [{ x | X }]] [digits]
whitespace は、スペースまたはタブ文字のことであり、無視されます。digits は 1 つ以上の 10 進数字です。この形式に一致しない文字を見つけるとスキャンを停止します。base が 2 と 36 の間の数値の場合は、基数として使用されます。base が 0 の場合は、nptr が指す文字列の先頭の文字で基数を判定します。最初の文字が 0 で、2 番目の文字が x または X 以外であると、文字列は 8 進整数と解釈されます。それ以外の場合は、10 進数と解釈されます。最初の文字が 0 で、2 番目の文字が x または X である場合、文字列は 16 進整数と解釈されます。最初の文字が 1 から 9 までの数値であると、文字列は 10 進整数と解釈されます。a から z (または A から Z) までの文字は、10 から 35 の値に割り当てられます。数値に使用できる文字は、base よりも小さい値が割り当てられている文字だけです。strtoul 関数では、プラス記号 (+) またはマイナス記号 (–) のプリフィックスを使用できます。マイナス記号を最初に付けると、戻り値が負の数になります。
必要条件
ルーチン |
必須ヘッダー |
---|---|
strtoul |
<stdlib.h> |
wcstoul |
<stdlib.h> または <wchar.h> |
_strtoul_l |
<stdlib.h> |
_wcstoul_l |
<stdlib.h> または <wchar.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
使用例
「strtod」の例を参照してください。
.NET Framework の相当するアイテム
参照
参照
strtod、_strtod_l、wcstod、_wcstod_l