wcstod() - wcstof() - wcstold() — ワイド文字ストリングから double、浮動、および long double への変換
フォーマット
#include <wchar.h>
double wcstod(const wchar_t *nptr, wchar_t **endptr);
float wcstof(const wchar_t *nptr, wchar_t **endptr);
long double wcstold(const wchar_t *nptr, wchar_t **endptr);
言語レベル
XPG4
スレッド・セーフ
はい
ロケール依存
コンパイル・コマンドで LOCALETYPE(*LOCALE) が指定される場合、この関数の振る舞いは、現行ロケールの LC_CTYPE カテゴリーおよび LC_NUMERIC カテゴリーの影響を受ける可能性があります。また、コンパイル・コマンドで LOCALETYPE(*LOCALEUCS2) または LOCALETYPE(*LOCALEUTF) が指定されている場合、この関数の振る舞いは、現行ロケールの LC_UNI_CTYPE カテゴリーおよび LC_UNI_NUMERIC カテゴリーの影響も受ける可能性があります。この関数は、コンパイル・コマンドに対して LOCALETYPE(*CLD) が指定されている場合には使用できません。詳細については、CCSID およびロケールの理解を参照してください。
ワイド文字関数
詳細については、ワイド文字を参照してください。
説明
wcstod()、wcstof()、wcstold() 関数は、nptr が指すワイド文字ストリングの先頭部分を double、浮動、および long double の値に変換します。nptr パラメーターは、 数値バイナリー浮動小数点値として解釈できる文字のシーケンスを指します。 これらの関数は、数値の一部として認識できない文字に遭遇すると、その時点でストリングの読み取りを停止します。この文字は、ストリングの最後にある wchar_t ヌル文字である場合があります。
>>-+------------+--+-----+--------------------------------------> '-whitespace-' +- + -+ '- – -' >--+-+-digits--+---+--+--------+-+--+------------------------+-----------------+->< | | '-.-' '-digits-' | '-+-e-+--+-----+--digits-' | | '-.--digits-----------------' '-E-' +- + -+ | | '- – -' | '-0--+-x-+--+-hexdigits--+---+--+-----------+-+--+------------------------+-' '-X-' | '-.-' '-hexdigits-' | '-+-p-+--+-----+--digits-' '-.--hexdigits--------------------' '-P-' +- + -+ '- – -'
最初の文字がこの形式に適合しない場合、走査は停止されます。 さらに、INFINITY または NAN のシーケンス (大/小文字を区別しない) が許可されます。
指数が 16 進数字形式で指定された場合、その指数は 2 進 (底 2) 指数として解釈されます。指数が 10 進数字形式で指定された場合、その指数は 10 進 (底 10) 指数として解釈されます。
戻り値
wcstod()、wcstof()、wcstold() 関数は、変換済みの double、浮動、または long double の値を返します。変換が実行できない場合、これらの関数は 0 を戻します。正しい値が表示可能な値の範囲外にある場合は、これらの関数は +HUGE_VAL または -HUGE_VAL を値の符号に応じて戻し、 errno を ERANGE に設定します。 正しい値がアンダーフローを引き起こした場合、これらの関数は 0 を戻し、errno は ERANGE に設定されます。nptr が指すストリングが空であるか、想定される形式になっていない場合には、 変換は行われません。nptr の値は、 endptr が NULL ポインターでない場合に endptr が指すオブジェクトに保管されます。
数字以外の文字が、指数として読み取られる E または e に続く場合、wcstod()、wcstof()、および wcstold() 関数は失敗しません。例えば、100elf は 浮動小数点値 100.0 に変換されます。
errno の値は ERANGE (範囲エラー) に 設定される可能性があります。
INFINITY (大/小文字を区別しない) の文字シーケンスは、INFINITY の値をもたらします。NAN の文字値は、Quiet Not-A-Number (NAN) 値をもたらします。
例
#include <stdio.h>
#include <wchar.h>
int main(void)
{
wchar_t *wcs = L"3.1415926This stopped it";
wchar_t *stopwcs;
printf("wcs = ¥"%ls¥"¥n", wcs);
printf(" wcstod = %f¥n", wcstod(wcs, &stopwcs));
printf(" Stop scanning at ¥"%ls¥"¥n", stopwcs);
printf(" wcstof = %f\n", wcstof(wcs, &stopwcs));
printf(" Stop scanning at ¥"%ls¥"¥n", stopwcs);
printf(" wcstold = %lf\n", wcstold(wcs, &stopwcs));
printf(" Stop scanning at ¥"%ls¥"¥n", stopwcs);
return 0;
/**************************************************
The output should be similar to:
wcs = "3.1415926This stopped it"
wcstod = 3.141593
Stop scanning at "This stopped it"
wcstof = 3.141593
Stop scanning at "This stopped it"
wcstold = 3.141593
Stop scanning at "This stopped it"
**************************************************/
}
関連情報
- strtod() - strtof() - strtold() — 文字ストリングから double、浮動、および long double への変換
- strtod32() - strtod64() - strtod128() — 文字ストリングから 10 進浮動小数点への変換
- strtol() - strtoll() — 文字ストリングから long 型および long long 型整数への変換
- wcstod32() - wcstod64() - wcstod128()— ワイド文字ストリングから 10 進浮動小数点への変換
- wcstol() - wcstoll() — ワイド文字ストリングから long 型および long long 型整数への変換
- wcstoul() - wcstoull() — ワイド文字ストリングから符号なし long 型整数および符号なし long long 型整数への変換
- <wchar.h >
