strtold, _strtold_l, wcstold, _wcstold_l

文字列を long double 精度浮動小数点値に変換します。

構文

long double strtold(
   const char *strSource,
   char **endptr
);
long double _strtold_l(
   const char *strSource,
   char **endptr,
   _locale_t locale
);
long double wcstold(
   const wchar_t *strSource,
   wchar_t **endptr
);
long double wcstold_l(
   const wchar_t *strSource,
   wchar_t **endptr,
   _locale_t locale
);

パラメーター

strSource
NULL で終わる変換対象の文字列。

endptr
スキャンの終了位置を示す文字へのポインター。

locale
使用するロケール。

戻り値

strtold は、表現によってオーバーフローが発生する場合を除き、浮動小数点数の値を a long doubleとして返します。この場合、関数は +/-HUGE_VALL を返します。 符号 HUGE_VALL は、表現できない値の符号と一致します。 変換を実行できない場合、またはアンダーフローが発生する場合、strtold 関数は 0 を返します。

wcstold 関数の戻り値は、strtold 関数の戻り値と同じです。 どちらの関数でも、「パラメーターの検証」ERANGEで説明されているように、errnoオーバーフローまたはアンダーフローが発生し、無効なパラメーター ハンドラーが呼び出された場合に設定されます

リターン コードの詳細については、「errno_doserrno_sys_errlist、および _sys_nerr」を参照してください。

解説

各関数は、入力文字列 strSourcelong double に変換します。 関数は strtold 、数値の一部として認識できない最初の文字で文字列 strSource の読み取りを停止します。 終端の null 文字である可能性があります。 strtold のワイド文字バージョンは wcstold です。strSource 引数はワイド文字列です。 それ以外では、これらの関数の動作は同じです。

既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT のグローバル状態」を参照してください

汎用テキスト ルーチンのマップ

TCHAR.H のルーチン _UNICODE_MBCS が定義されていない _MBCS が定義されている _UNICODE が定義されている
_tcstold strtold strtold wcstold
_tcstold_l _strtold_l _strtold_l _wcstold_l

現在のロケールの LC_NUMERIC カテゴリの設定によって、strSource の小数点文字が認識されます。 詳細については、「 setlocale」と「 _wsetlocaleの両方を管理できます。 _l サフィックスが付いていない関数は、現在のロケールを使用します。_strtold_l および _wcstold_l は、渡されたロケールを代わりに使用する点を除いて _strtold および _wcstold と同じです。 詳細については、「 Locale」を参照してください。

そうでないNULL場合endptrは、スキャンを停止した文字へのポインターが、指している場所にendptr格納されます。 変換できなかった場合 (有効な数字が見つからなかった場合、または無効な base を指定した場合) は、strSource の値を endptr が指す位置に格納します。

strtold は、strSource が次の形式の文字列を指すものと想定します。

[whitespace][sign][digits][.digits][{d | D | e | E}[sign]digits]

whitespace はスペースやタブで構成され、無視されます。sign はプラス (+) またはマイナス (-) のいずれかで、digits は 1 つ以上の 10 進数字です。 小数点文字の前に数字がない場合は、少なくとも 1 つの数字が小数点文字の後に必要です。 10 進数の後には指数部を指定できます。指数部は、指数部の開始文字 (dDe、または E) および必要に応じて符号付き整数で構成されます。 指数部または基数文字が表示されない場合、基数文字は文字列の最後の桁の後にあると見なされます。 この形式に一致しない最初の文字でスキャンが停止します。

必要条件

ルーチンによって返される値 必須ヘッダー
strtold, _strtold_l <stdlib.h>
wcstold, _wcstold_l <stdlib.h> または <wchar.h>

互換性の詳細については、「 Compatibility」を参照してください。

// crt_strtold.c
// Build with: cl /W4 /Tc crt_strtold.c
// This program uses strtold to convert a
// string to a long double-precision value.

#include <stdlib.h>
#include <stdio.h>

int main( void )
{
   char *string;
   char *stopstring;
   long double x;

   string = "3.1415926535898This stopped it";
   x = strtold(string, &stopstring);
   printf("string = %s\n", string);
   printf("   strtold = %.13Lf\n", x);
   printf("   Stopped scan at: %s\n\n", stopstring);
}
string = 3.1415926535898This stopped it
   strtold = 3.1415926535898
   Stopped scan at: This stopped it

関連項目

データ変換
数学と浮動小数点のサポート
マルチバイト文字シーケンスの解釈
ロケール
文字列から数値の関数
strtod, _strtod_l, wcstod, _wcstod_l
strtol, wcstol, _strtol_l, _wcstol_l
strtoul, _strtoul_l, wcstoul, _wcstoul_l
atof, _atof_l, _wtof, _wtof_l
localeconv
_create_locale, _wcreate_locale
_free_locale