std:: wcstof, std:: wcstod, std:: wcstold
|
Definido en el encabezado
<cwchar>
|
||
|
float
wcstof
(
const
wchar_t
*
str,
wchar_t
**
str_end
)
;
|
(desde C++11) | |
|
double
wcstod
(
const
wchar_t
*
str,
wchar_t
**
str_end
)
;
|
||
|
long
double
wcstold
(
const
wchar_t
*
str,
wchar_t
**
str_end
)
;
|
(desde C++11) | |
Interpreta un valor de punto flotante en la cadena ancha apuntada por str .
La función descarta cualquier carácter de espacio en blanco (según lo determinado por std::iswspace ) hasta encontrar el primer carácter que no sea un espacio en blanco. Luego toma tantos caracteres como sea posible para formar una representación válida de punto flotante y los convierte en un valor de punto flotante. El valor válido de punto flotante puede ser uno de los siguientes:
- expresión decimal de punto flotante. Consta de las siguientes partes:
-
- (opcional) signo más o menos
- secuencia no vacía de dígitos decimales que opcionalmente contiene el carácter de punto decimal (según lo determinado por la localidad actual de C) (define el significando)
-
(opcional)
eoEseguido de signo menos o más opcional y secuencia no vacía de dígitos decimales (define el exponente en base 10 )
|
(desde C++11) |
- cualquier otra expresión que pueda ser aceptada por la configuración regional de C actualmente instalada locale .
Las funciones establecen el puntero apuntado por str_end para que apunte al carácter ancho después del último carácter interpretado. Si str_end es un puntero nulo, se ignora.
Contenidos |
Parámetros
| str | - | puntero a la cadena ancha terminada en nulo que se va a interpretar |
| str_end | - | puntero a un puntero a un carácter ancho |
Valor de retorno
Valor de punto flotante correspondiente al contenido de str en caso de éxito. Si el valor convertido excede el rango del tipo de retorno correspondiente, ocurre un error de rango y se retorna HUGE_VAL , HUGE_VALF o HUGE_VALL . Si no se puede realizar ninguna conversión, se retorna 0 .
Ejemplo
#include <cerrno> #include <clocale> #include <cwchar> #include <iostream> #include <string> int main() { const wchar_t* p = L"111.11 -2.22 0X1.BC70A3D70A3D7P+6 -Inf 1.18973e+4932zzz"; wchar_t* end; std::wcout << "Parsing L\"" << p << "\":\n"; for (double f = std::wcstod(p, &end); p != end; f = std::wcstod(p, &end)) { std::wcout << " '" << std::wstring(p, end-p) << "' -> "; p = end; if (errno == ERANGE) { std::wcout << "range error, got "; errno = 0; } std::wcout << f << '\n'; } if (std::setlocale(LC_NUMERIC, "de_DE.utf8")) { std::wcout << L"With de_DE.utf8 locale:\n"; std::wcout << L" '123.45' -> " << std::wcstod(L"123.45", 0) << L'\n'; std::wcout << L" '123,45' -> " << std::wcstod(L"123,45", 0) << L'\n'; } }
Salida:
Parsing L"111.11 -2.22 0X1.BC70A3D70A3D7P+6 -Inf 1.18973e+4932zzz": '111.11' -> 111.11 ' -2.22' -> -2.22 ' 0X1.BC70A3D70A3D7P+6' -> 111.11 ' -Inf' -> -inf ' 1.18973e+4932' -> range error, got inf With de_DE.utf8 locale: '123.45' -> 123 '123,45' -> 123.45
Véase también
|
convierte una cadena de bytes a un valor de punto flotante
(función) |
|
|
Documentación C
para
wcstof
|
|