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、float、または long double 値に変換します。 nptr パラメーターは、
数値バイナリー浮動小数点値として解釈できる文字のシーケンスを指します。 これらの関数は、数値の一部として認識できない文字に遭遇すると、その時点でストリングの読み取りを停止します。 この文字は、ストリングの最後にある wchar_t
ヌル文字である場合があります。
最初の文字がこの形式に適合しない場合、走査は停止されます。 さらに、以下のシーケンスがあります。INFINITYまたはNAN(大/小文字を無視して) 許可されます。
指数が 16 進数字形式で指定された場合、その指数は 2 進 (底 2) 指数として解釈されます。 指数が 10 進数字形式で指定された場合、その指数は 10 進 (底 10) 指数として解釈されます。
戻り値
wcstod()、 wcstof()、 wcstold() 関数は、変換された double、float、または long double の値を戻します。 変換を実行できなかった場合は、これらの関数は 0 を戻します。 正しい値が表現可能な値の範囲外にある場合、これらの関数は +HUGE_VAL または -HUGE_VAL ( 値の符号に従って ) を戻し、errno を ERANGE に設定します。 正しい値がアンダーフローを引き起こした場合、これらの関数は
0 を戻し、errno は ERANGE に設定されます。 nptr
が指すストリングが空であるか、想定される形式になっていない場合には、
変換は行われません。nptr の値は、
endptr が NULL ポインターでない場合に
endptr が指すオブジェクトに保管されます。
wcstod()、 wcstof()、 wcstold() 関数は、指数として読み取られる E または e の後に数字以外の文字があっても失敗しません。 例えば、100elf は
浮動小数点値 100.0 に変換されます。
errno の値は ERANGE (範囲エラー) に
設定される可能性があります。
以下の文字シーケンスINFINITY(大/小文字を無視して) INFINITY の値を生成します。 文字値:NANこれにより、Quiet Not-A-Number (NAN) 値が生成されます。
例
wcstod()、 wcstof()、 wcstold() 関数を使用して、ストリング wcs を double 値、float 値、および long double 値に変換します。#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 ()-str含有 ()-文字ストリングから Double、Float、および Long Double への変換
- strtod32()- strtod64()- strtod128()-文字ストリングから 10 進浮動小数点への変換
- strtol() – strtoll() — 文字の文字列を長整数または項目の多い長整数に変換する
- wcstod32()- wcstod64()- wcstod128()-ワイド文字ストリングから 10 進浮動小数点への変換
- wcstol() – wcstoll() — 文字の文字列を長整数または項目の多い長整数に変換する
- wcstoul() - wcstoull() — 文字ストリングを符号なしの長整数および符号なしの長整数 ( 長整数 ) に変換する
- <wchar.h>
