wcstol または wcstoll サブルーチン

目的

ワイド文字ストリングを長整数表現に変換します。

ライブラリー

標準 C ライブラリー (libc.a)

構文

#include <stdlib.h>
long int wcstol ( Nptr Endptr Base)
const wchar_t *Nptr;
wchar_t **Endptr;
int Base;
long long int wcstoll (*Nptr, **Endptr, Base)
const wchar_t *Nptr;
wchar_t **Endptr:
int Base

説明

WCストル サブルーチンは、ワイド文字ストリングを長整数表現に変換します。 WCSTOLL サブルーチンは、ワイド文字ストリングを long long 型整数表現に変換します。

  1. ( IswSpace サブルーチンによって指定された) 空白ワイド文字コードの最初のシーケンス (空の場合もある)
  2. 整数として解釈され、 基本 パラメーターによって決定される基数で表されるサブジェクト・シーケンス
  3. 1 つ以上の認識されないワイド文字コードの最終ワイド文字ストリング (入力ワイド文字ストリングの終了ワイド文字 NULL を含む)

可能な場合、サブジェクトは整数に変換され、結果が戻されます。

基本 パラメーターには、0 から 9 までの値、または a (または A) から z (または Z) までの値を指定できます。 ベースには 36 個の値が存在する可能性があります。 基本値が 0 の場合、サブジェクト・ストリングの予期される形式は、10 進定数、8 進定数、または 16 進定数の形式であり、そのいずれかの前に + (正符号) または-(負符号) を付けることができます。 10 進定数は、ゼロ以外の数字で始まり、一連の 10 進数字で構成されます。 8 進定数は、接頭部 0 と、その後にオプションで 0 から 7 までの数字のシーケンスで構成されます。 16 進定数は、接頭部 0x (または 0X) の後に一連の 10 進数と、10 (a または A) から 15 (f または F) までの範囲の値を持つ文字 a (または A) から f (または F) を続けたものとして定義されます。

基本値が 2 から 36 の間の場合、サブジェクト・シーケンスの予期される形式は、 基本 パラメーターで指定された基数内の整数を表す文字と数字のシーケンスです。オプションで、前に + または-を付けることができますが、整数接尾部は含まれません。 文字 a (または A) から z (または Z) までは、10 から 35 までの値と見なされます。 値がベースの値より小さい文字のみが許可されます。 基数の値が 16 の場合、文字 0x または 0X は、符号 (存在する場合) の後の文字または数字のシーケンスの前にオプションで置くことができます。

ワイド文字ストリングは、( IswSpace サブルーチンによって決定された) 最初のスペース文字をスキップするために構文解析されます。 非スペース文字は、 基本 パラメーターで指定された基数内の整数を形成するサブジェクト・ストリングの開始を示します。 サブジェクト・シーケンスは、予期される形式の長整数である、最も長い初期サブストリングとして定義されます。 この形式を満たさない文字は、 WCストル または WCSTOLL サブルーチンへの呼び出しから戻るときに、 エンド・ポインター パラメーターによって指し示されるワイド文字ストリングの最終部分を開始します。

パラメーター

項目 説明
Nptr (N) 長整数に変換されるワイド文字ストリングを指すポインターが入っています。
エンド・ポインター 有効な文字ではないワイド文字が検出された Nptr (N) パラメーター・ストリング内の位置を指すポインターが含まれています。
ベース 文字が解釈される基数を指定します。

戻り値

WCストル および WCSTOLL サブルーチンは、期待される形式が検出されると、long または long long 型整数の変換された値を返します。 変換を実行できなかった場合は、値 0 が戻されます。 変換された値が表現可能な値の範囲外の場合、 LONG_MAX (L) または 長時間 (分)WCストル サブルーチンに戻され、 LLONG_MAX (L) または 最小時間 (LLONG_MIN)WCSTOLL サブルーチンに (値の符号に従って) 戻されます。 エラー番号 の値は ERANGE (E)に設定されます。 基本 パラメーターで指定された基本値がサポートされていない場合は、 エインヴァル が返されます。

サブジェクト・シーケンスに予期される形式がある場合、それは該当する基数の整数定数として解釈されます。 最後のストリングへのポインターは、そのパラメーターが NULL ポインターでない場合、 エンド・ポインター パラメーターに保管されます。

サブジェクト・シーケンスが空であるか、有効な形式でない場合、変換は行われません。 Nptr (N) パラメーターの値は、そのパラメーターが NULL ポインターでない場合は エンド・ポインター パラメーターに保管されます。

0、 長時間 (分)、および LONG_MAX (L) ( WCストルの場合) と 最小時間 (LLONG_MIN)、および LLONG_MAX (L) ( WCSTOLLの場合) は、エラーが発生した場合に戻され、 WCストル サブルーチンまたは WCSTOLL サブルーチンが正常に実行された場合にも有効な戻り値であるため、アプリケーションは、いずれかのサブルーチンを呼び出す前に エラー番号 グローバル変数を 0 に設定し、戻り後に エラー番号 を検査する必要があります。 エラー番号 グローバル値が変更されている場合は、エラーが発生しました。

ワイド文字ストリングを符号付き長整数に変換するには、次のコードを使用します。

#include <stdlib.h>
#include <locale.h>
#include <errno.h>
main()
{
        wchar_t *WCString, *endptr;
        long int retval;
        (void)setlocale(LC_ALL, "");
        /**Set errno to 0 so a failure for wcstol can be
        **detected */
        errno=0;
        /*
        **Let WCString point to a wide character null terminated
        ** string containing a signed long integer value
        ** 
                */retval = wcstol ( WCString &endptr, 0 );
        /* Check errno, if it is non-zero, wcstol failed */
        if (errno != 0) {
                /*Error handling*/
        }
        else if (&WCString == endptr) {
                /* No conversion could be performed */
                /* Handle this case accordingly. */
        }
        /* retval contains long integer */
}