Поделиться через


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; дополнительные сведения см. в разделе . _wsetlocalesetlocale Функции без суффикса _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