seclan のほえほえルーム

| |

・プログラミング言語 C の新機能 Part XXXIX: stdlib.h: strtoX ファミリ / wchar.h: wcstoX ファミリ (2000/01/17 [])
 stdlib.h ヘッダに strtod、strtold 関数が追加されました。また、相当する wchar_t 版の関数が、wchar.h に wcstof、wcstold として追加されました。これらは、double を対象とする strtod、wcstod を、float、long double にも対応させたものです。

strtof
strtold
名前float strtof(const char *restrict p, char **restrict endp);
long double strtold(const char *restrict p, char **restrict endp);
ヘッダstdlib.h
引数p: float 型(strtof) または long double 型(strtold) に変換したい文字列を指すポインタ
endp: 解釈を中止したポインタ位置を格納するポインタ
戻値0: 何も変換されなかったとき
+HUGE_VALF(strtof), +HUGE_VALL(strtold): +方向に表現できる範囲を超えた
-HUGE_VALF(strtof), +HUGE_VALL(strtold): -方向に表現できる範囲を超えた
それ以外: 変換した値
解説  p で指し示された文字列へのポインタを浮動小数点として解釈し、それを float 型(strtof) または long double 型(strtold) の値として変換した値を返します。解釈が終了したポインタ位置が endp に格納されます(ただし endp が NULL でない場合)。変換された値が戻り値で表現される型を超えた場合、オーバーフローした方向により、strtof の場合は +HUGE_VALF または -HUGE_VALF が、strtold の場合には +HUGE_VALL または -HUGE_VALL が返され、errno に ERANGE がセットされます。何も変換されなかった場合には 0 が返されます。
 解釈される文字列は、strtod で許されている文字列表現に加え、新しく導入された浮動小数点の16進数表記法も認識し、従来からある、INF、NAN に加え、INFINITY、NAN(DA003) のように NAN の後に( )を加えその中に数字やアルファベット、_ をつなげたものを付加情報として追加したものも認識します(これは NAN として認識します)。またこれらの前に符号をつけることができ、大文字と小文字の区別はなされません。
#2000/03/04:NAN(...)の部分を修正


wcstof
wcstold
名前float wcstof(const wchar_t *restrict p, wchar_t **restrict endp);
long double wcstold(const wchar_t *restrict p, wchar_t **restrict endp);
ヘッダwchar.h
引数p: float 型(wcstof) または long double 型(wcstold) に変換したい文字列を指すポインタ
endp: 解釈を中止したポインタ位置を格納するポインタ
戻値0: 何も変換されなかったとき
+HUGE_VALF(wcstof), +HUGE_VALL(wcstold): +方向に表現できる範囲を超えた
-HUGE_VALF(wcstof), +HUGE_VALL(wcstold): -方向に表現できる範囲を超えた
それ以外: 変換した値
解説  p で指し示された文字列へのポインタを浮動小数点として解釈し、それを float 型(wcstof) または long double 型(wcstold) の値として変換した値を返します。解釈が終了したポインタ位置が endp に格納されます(ただし endp が NULL でない場合)。変換された値が戻り値で表現される型を超えた場合、オーバーフローした方向により、wcstof の場合は +HUGE_VALF または -HUGE_VALF が、wcstold の場合には +HUGE_VALL または -HUGE_VALL が返され、errno に ERANGE がセットされます。何も変換されなかった場合には 0 が返されます。
 解釈される文字列は、wstrtod で許されている文字列表現に加え、新しく導入された浮動小数点の16進数表記法も認識し、従来からある、INF、NAN に加え、INFINITY、NAN(DA003) のように NAN の後に( )を加えその中に数字やアルファベット、_ をつなげたものを付加情報として追加したものも認識します(これは NAN として認識します)。またこれらの前に符号をつけることができ、大文字と小文字の区別はなされません。
#2000/03/04:NAN(...)の部分を修正

 また、strtol、wcstol、strtoul、wcstoul 関数の機能を long long int 型で処理できるよう新しい関数 strtoll、wcstoll、strtoull、wcstoull 関数が追加されました。

strtoll
strtoull
名前long long int strtoll(const char *restrict p, char **restrict endp, int base);
unsigned long long int strtoull(const char *restrict p, char **restrict endp, int base);
ヘッダstdlib.h
引数p: long long 型(strtoll) または unsigned long long 型(strtoull) に変換したい文字列を指すポインタ
endp: 解釈を中止したポインタ位置を格納するポインタ
base: 変換時の基数
戻値0: 何も変換されなかったとき
strtoll の場合
 LLONG_MAX: +方向に表現できる範囲を超えた
 LLONG_MIN: -方向に表現できる範囲を超えた
strtoull の場合
 ULLONG_MAX: 表現できる範囲を超えた
それ以外: 変換した値
解説  p で指し示された文字列へのポインタを base を基数とした整数として解釈し、それを long long 型の値または unsigned long long 型の値として変換した値を返します。解釈が終了したポインタ位置が endp に格納されます(ただし endp が NULL でない場合)。変換された値が戻り値で表現される型を超えた場合、strtoll は LLONG_MAX または LLONG_MIN が、strtoull では ULLONG_MAX が返され、errno に ERANGE がセットされます。何も変換されなかった場合には 0 が返されます。base を 0 にすると文字列から自動的に基数を決定します。


wcstoll
wcstoull
名前long long int wcstoll(const wchar_t *restrict p, wchar_t **restrict endp, int base);
unsigned long long int wcstoull(const wchar_t *restrict p, wchar_t **restrict endp, int base);
ヘッダwchar.h
引数p: long long 型(wcstoll) または unsigned long long 型(wcstoull) に変換したい文字列を指すポインタ
endp: 解釈を中止したポインタ位置を格納するポインタ
base: 変換時の基数
戻値0: 何も変換されなかったとき
wcstoll の場合
 LLONG_MAX: +方向に表現できる範囲を超えた
 LLONG_MIN: -方向に表現できる範囲を超えた
wcstoull の場合
 ULLONG_MAX: 表現できる範囲を超えた
それ以外: 変換した値
解説  p で指し示された文字列へのポインタを base を基数とした整数として解釈し、それを long long 型の値または unsigned long long 型の値として変換した値を返します。解釈が終了したポインタ位置が endp に格納されます(ただし endp が NULL でない場合)。変換された値が戻り値で表現される型を超えた場合、wcstoll は LLONG_MAX または LLONG_MIN が、wcstoull では ULLONG_MAX が返され、errno に ERANGE がセットされます。何も変換されなかった場合には 0 が返されます。base を 0 にすると文字列から自動的に基数を決定します。



by seclan


| |

 

配信

4.26 msec