strtof
, _strtof_l
, wcstof
, _wcstof_l
文字列を単精度浮動小数点値に変換します。
構文
float strtof(
const char *strSource,
char **endptr
);
float _strtof_l(
const char *strSource,
char **endptr,
_locale_t locale
);
float wcstof(
const wchar_t *strSource,
wchar_t **endptr
);
float wcstof_l(
const wchar_t *strSource,
wchar_t **endptr,
_locale_t locale
);
パラメーター
strSource
NULL で終わる変換対象の文字列。
endptr
スキャンの終了位置を示す文字へのポインター。
locale
使用するロケール。
戻り値
strtof
では、オーバーフローを引き起こす場合を除き、浮動小数点数の値を返します。オーバーフローの場合は、この関数で +/-HUGE_VALF
を返します。 符号 HUGE_VALF
は、表現できない値の符号と一致します。 変換を実行できない場合、またはアンダーフローが発生する場合、strtof
関数は 0 を返します。
wcstof
関数の戻り値は、strtof
関数の戻り値と同じです。 どちらの関数でも、「パラメーターの検証」ERANGE
で説明されているように、errno
オーバーフローまたはアンダーフローが発生し、無効なパラメーター ハンドラーが呼び出された場合に設定されます。
リターン コードの詳細については、「errno
、_doserrno
、_sys_errlist
、および _sys_nerr
」を参照してください。
解説
各関数は、入力文字列 strSource
を float
に変換します。 strtof
関数は、strSource
を単精度値に変換します。 strtof
では、数値の一部として認識できない文字を最初に見つけた時点で、文字列 strSource
の読み取りを停止します。 この文字は、終端の NULL 文字の場合があります。 wcstof
関数は、strtof
関数のワイド文字バージョンで、strSource
引数はワイド文字列です。 それ以外では、これらの関数の動作は同じです。
既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT のグローバル状態」を参照してください。
汎用テキスト ルーチンのマップ
TCHAR.H のルーチン | _UNICODE と _MBCS が定義されていない |
_MBCS が定義されている |
_UNICODE が定義されている |
---|---|---|---|
_tcstof |
strtof |
strtof |
wcstof |
_tcstof_l |
_strtof_l |
_strtof_l |
_wcstof_l |
現在のロケールのカテゴリ設定によってLC_NUMERIC
、基数文字strSource
の認識が決定されます。詳細については、「、_wsetlocale
」を参照してくださいsetlocale
。 _l
サフィックスが付いていない関数は、現在のロケールを使用します。サフィックスが付いている関数は、渡されたロケールを代わりに使用する点を除いて同じです。 詳細については、「 Locale」を参照してください。
そうでないNULL
場合endptr
は、スキャンを停止した文字へのポインターが、指している場所にendptr
格納されます。 変換できなかった場合 (有効な数字が見つからなかった場合、または無効な base を指定した場合) は、strSource
の値を endptr
が指す位置に格納します。
strtof
は、strSource
が次の形式の文字列を指すものと想定します。
[whitespace
] [sign
] [digits
] [.digits
] [{e
| E
} [sign
] digits
]
whitespace
はスペースやタブで構成され、無視されます。sign
はプラス (+
) またはマイナス (-
) のいずれかで、digits
は 1 つ以上の 10 進数字です。 小数点文字の前に数字がない場合は、少なくとも 1 つの数字が小数点文字の後に必要です。 10 進数の後には指数部を指定できます。指数部は、指数部の開始文字 (e
または E
) および必要に応じて符号付き整数で構成されます。 指数部または基数文字が表示されない場合、基数文字は文字列の最後の桁の後にあると見なされます。 この形式に一致しない最初の文字でスキャンが停止します。
これらの関数の UCRT バージョンでは、Fortran スタイル (d
または D
) 指数の文字の変換をサポートしていません。 この非標準の拡張機能は、CRT の以前のバージョンでサポートされており、コードの互換性に影響する変更点がある可能性があります。
必要条件
ルーチンによって返される値 | 必須ヘッダー |
---|---|
strtof , _strtof_l |
C: <stdlib.h> C++: <cstdlib> または <stdlib.h> |
wcstof , _wcstof_l |
C: <stdlib.h> または <wchar.h> C++: <cstdlib>、<stdlib.h>、または <wchar.h> |
互換性の詳細については、「 Compatibility」を参照してください。
例
// crt_strtof.c
// This program uses strtof to convert a
// string to a single-precision value.
#include <stdlib.h>
#include <stdio.h>
int main( void )
{
char *string;
char *stopstring;
float x;
string = "3.14159This stopped it";
x = strtof(string, &stopstring);
printf("string = %s\n", string);
printf(" strtof = %f\n", x);
printf(" Stopped scan at: %s\n\n", stopstring);
}
string = 3.14159This stopped it
strtof = 3.141590
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
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示