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
. Для обеих функций задано значение, errno
если возникает переполнение или переполнение, и вызывается обработчик недопустимых параметров, как описано в разделе проверкиERANGE
параметров.
Дополнительные сведения о кодах возврата см. в разделе 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.
Если endptr
это не NULL
так, указатель на символ, который остановил сканирование, хранится в расположении, на которое указывает endptr
. Если не удается выполнить преобразование (не найдены допустимые цифры или указано недопустимое основание), значение strSource
сохраняется в расположении, указанном endptr
.
Функция strtof
ожидает, что strSource
указывает на строку следующего вида:
[] [whitespace
sign
] [digits
] [.digits
] [{e
| E
} [sign
] ] digits
whitespace
может содержать пробелы и символы табуляции, которые игнорируются; sign
— это или плюс (+
), или минус (-
); digits
— это одна или несколько десятичных цифр. Если перед символом основания системы счисления нет никаких цифр, то после него должна отображаться хотя бы одна цифра. За десятичными цифрами может следовать показатель степени, который состоит из вводной буквы (e
или E
) и при необходимости целого числа со знаком. Если экспонентная часть или радикс не отображается, предполагается, что символ радикса следует за последней цифрой в строке. Первый символ, который не соответствует этой форме, останавливает сканирование.
Версии UCRT этих функций не поддерживают преобразование букв стилей Фортрана (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>> |
Дополнительные сведения о совместимости см. в разделе Совместимость.
Пример
// 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