標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
z/OS® UNIX |
両方 | OS/390 V2R10 |
#include <wchar.h>
unsigned long long wcstoull(const wchar_t * __restrict__nptr,
wchar_t ** __restrict__endptr, int base);
その後で、サブジェクト・シーケンスの符号なし long long 整数への変換を試みてから、結果を戻します。
base の値がゼロの場合には、サブジェクト・シーケンスの 想定される形式は ISO/IEC 9899: 条項 6.1.3.2 に記述 されている整数定数の想定される形式で、オプションで前に正符号 (+) または負符号 (-) が付きますが、整数サフィックスは含まれません。base の値が 2 と 36 の間の場合には、サブジェクト・シーケンス の想定される形式は base 別に指定された基数を使用して整数を表示する ポータブル文字セットの一連の文字と数字のシーケンスで、オプションで前に正符号 (+) または負符号 (-) が付きますが、整数サフィックスは含まれません。a (または A) ~ z (または Z) までの文字は値 10 ~ 35 までの値と想定されます。想定された値が base の値より小さい文字だけが許可されます。base の値が 16 の場合には、文字 0x または 0X はオプションで一連の文字および数字の前に付くことがありますが、符号があるとその後に続きます。
サブジェクト・シーケンスは、最初の非空白ワイド文字から始まる、入力ワイド文字ストリングの 最長の初期サブシーケンスとして定義されています。これが想定される形式です。入力ワイド文字ストリングが空であるか、すべて空白文字からなって いるか、あるいは最初の非空白ワイド文字が符号あるいは許可可能な 文字または数字以外である場合には、サブジェクト・シーケンスには ワイド文字は含まれません。
サブジェクト・シーケンスに想定される形式があって、base の値が ゼロの場合には、最初の数字から始まるワイド文字のシーケンスは ISO/IEC 9899: 条項 6.1.3.2 の規則に従って整数定数と解釈されます。サブジェクト・シーケンスに想定される形式があって、base の値が 2 と 36 の間に ある場合には、これは変換の基数として使用され、上に指定された値を各文字に想定します。サブジェクト・シーケンスが負符号 (-) で始まる場合には、変換から生じる値は無効になります。最終ストリングを指すポインターは、endptr が NULL ポインターでない場合に endptr が指すオブジェクトに保管されます。C または POSIX ロケール以外のロケールでは、追加インプリメンテーション定義 のサブジェクト・シーケンス形式が受け入れられることがあります。
サブジェクト・シーケンスが空であるか、想定される形式になっていない場合には、変換は行われません。nptr の値は、endptr が NULL ポインターでない場合に、endptr が指すオブジェクトに保管されます。
このワイド文字関数の動作は、現行ロケールの LC_CTYPE カテゴリーの影響を受けます。 カテゴリーを変更すると、未定義の結果が発生する可能性があります。
0、および {ULLONG_MAX} がエラーで戻されましたが、0 は正常実行時の有効な戻り値でもあるため、エラー状態を検査するアプリケーションは、errno を 0 に設定し、wcstoull() を呼び出してから、errno を検査する必要があります。
正常に実行された場合、wcstoull() は、変換された値があれば、それを戻します。
正常に実行されなかった場合、変換が実行できないと、wcstoull() は 0 を戻します。正しい値が表現可能な値の範囲外にある場合には、wcstoull() は ULLONG_MAX (ULONGLONG_MAX) を戻します。基数の値がサポートされない場合、wcstoull() は 0 を戻します。
正常に実行されなかった場合、wcstoull() は errno を次のいずれかの 値に設定します。
/* LongLong conversion */
#define _LONG_LONG 1
#include <stdio.h>
#include <wchar.h>
#define BASE 2
int main(void)
{
wchar_t *wcs = L"1000e13 camels";
wchar_t **endptr;
unsigned long long answer;
answer = wcstoull(wcs, endptr, BASE);
printf("The input wide string used: `%ls`¥n", wcs);
printf("The unsigned long long produced: %llu¥n", answer);
printf("The substring of the input wide string that was not");
printf(" converted to unsigned long long: `%ls`¥n", *endptr);
}