名称
wcstod() ― ワイドキャラクタ文字列の倍精度数への変換
構文
#include <wchar.h>
double wcstod(const wchar_t *nptr, wchar_t **endptr);
特記事項:
この関数は XPG4 の Worldwide Portability Interface によるワイドキャラクタ整形用関数に従っています。動作は、 strtod(3C) で定義されている 8 ビット文字の整形用関数と同様です。
説明
wcstod() は、 nptr が指すワイドキャラクタ文字列が表す数を、倍精度浮動小数点数値として返します。
このワイドキャラクタ文字列を先頭から不適切な文字が現れるまで走査します。
先頭の空白文字 wctype(3C) の iswspace() で定義)
は無視します。 何も変換しなかった場合、戻り値は 0 です。
wcstod() は、ワイドキャラクタを次の手順で認識します。
| 1. | | オプションの「空白」ワイドキャラクタからなる文字列を無視し、 |
| 2. | | オプションの符号、 |
| 3. | | 数字の列 (オプションとして小数点キャラクタを持つ)、 |
| 4. | | オプションで e または E に続いて、オプションの符号または空白、さらに続いて整数。 |
小数点キャラクタは、現在の NLS 環境 setlocale(3C) を参照) で決まります。 setlocale() が呼び出され、かつ正常終了したのではない場合、既定の
NLS 環境である、"C" lang(5) を参照)
を使います。 デフォルトでは、ピリオド (.) を小数点キャラクタとします。
endptr の値が (wchar_t **)NULL でない場合、これが指す変数を、認識した最後の数字の次のワイドキャラクタを
指すように設定します。何も変換しなかった場合、 *endptr を nptr に設定し、戻り値は 0 となります。
この関数と wchar_t 型はヘッダーファイル <wchar.h>
で定義してあります。
多言語化対応
ロケール
現在の NLS 環境での、小数点キャラクタの値は、 LC_NUMERIC カテゴリによって決まります。
ワイドキャラクタコードがどのように処理されるかは、 LC_CTYPE カテゴリによって決まります。
サポートされる国際的コードセット
シングル/マルチバイトの文字コードセットがサポートされています。
戻り値
正しい変換値がオーバーフローを起こす場合、その符号に従って +HUGE_VAL または -HUGE_VAL を戻り値とし、 errno を
ERANGE に設定します。
正しい変換値がアンダーフローを起こす場合、戻り値は 0 となり、 errno を
ERANGE に設定します。
wcstod() が、入力されたワイドキャラクタから inf または infinity を検出した場合 (どちらも大文字小文字の区別なし)、 HUGE_VAL を返します。また、 nan (大文字小文字の区別なし)
を検出した場合は _DNANQ を返します。
著者
wcstod() は、AT&T と HP で開発されました。