A função wcstof () em C ++ interpreta o conteúdo de uma string larga como um número de ponto flutuante e retorna seu valor como um float.
Esta função também define um ponteiro para apontar para o primeiro caractere largo após o último caractere válido da string larga, se houver, caso contrário, o ponteiro é definido como nulo.
É definido no arquivo de cabeçalho.
protótipo wcstof ()
float wcstof (const wchar_t * str, wchar_t ** str_end);
A função wcstof () leva a string larga e um ponteiro para o caractere largo como seu parâmetro, interpreta o conteúdo da string larga como um número de ponto flutuante e retorna um valor flutuante.
Parâmetros wcstof ()
- str: Uma string larga com a representação de um número de ponto flutuante.
- str_end: Ponteiro para um ponteiro para um caractere largo. O valor de str_end é definido pela função para o próximo caractere em str após o último caractere válido. Este parâmetro também pode ser um ponteiro nulo.
wcstof () Valor de retorno
A função wcstof () retorna:
- um valor flutuante (que é convertido da string larga).
- 0,0 se nenhuma conversão válida puder ser realizada.
Se o valor convertido estiver fora do intervalo, ocorre um erro de intervalo e um HUGE_VAL positivo ou negativo é retornado.
Exemplo 1: Como funciona a função wcstof ()?
#include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str() = L"40.001u220fc12"; wchar_t *end; float value; value = wcstof(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )
Quando você executa o programa, a saída será:
String ampla = 40,001∏c12 Valor flutuante = 40,001 String final = ∏c12
Exemplo 2: função wcstof () sem caracteres finais
#include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str() = L"791.513"; wchar_t *end; float value; value = wcstof(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )
Quando você executa o programa, a saída será:
String ampla = 791.513 valor flutuante = 791.513 String final =
Um valor de ponto flutuante válido para a função wcstof () consiste em um sinal opcional + ou - seguido por um dos seguintes conjuntos:
- Para valor de ponto flutuante decimal :
- Um grupo de dígitos decimais (0-9), contendo opcionalmente um ponto decimal (.). Por exemplo: 13,170, -5,63, etc.
- Uma parte expoente opcional (e ou E) seguida por um sinal opcional + ou - e uma sequência não vazia de dígitos decimais. Por exemplo: 3.46101e + 007, 13.19e-013, etc.
- Para valor de ponto flutuante hexadecimal :
- Uma string começando com 0x ou 0X, seguida por uma sequência não vazia de dígitos hexadecimais, opcionalmente contendo um ponto decimal (.). Por exemplo: 0xfa5, -0xb1f.24, etc.
- Uma parte expoente opcional (p ou P) seguida por um sinal opcional + ou - e uma sequência não vazia de dígitos hexadecimais. Por exemplo: 0x51c.23p5, -0x2a.3p-3, etc.
- Infinito :
- INF ou INFINITY (ignorando maiúsculas e minúsculas). Por exemplo: -Inf, InfiNiTy, etc.
- NaN (não é um número) :
- Seqüência NAN ou NAN (ignorando maiúsculas e minúsculas) em que seqüência é uma seqüência de caracteres que consiste apenas em caracteres alfanuméricos ou o sublinhado (_). O resultado é um NaN silencioso. Por exemplo: Nan, NaNab1, etc.
Exemplo 3: Como wcstof () funciona com expoentes e hexadecimais?
#include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str1() = L"39.119e+2xxu0a93"; wchar_t str2() = L"0Xf1.23cu00d8a1"; wchar_t *end; float value; value = wcstof(str1,&end); wcout << L"Wide String = " << str1 << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstof(str2,&end); wcout << L"Wide String = " << str2 << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )
Quando você executa o programa, a saída será:
String ampla = 39.119e + 2xx ઓ Valor flutuante = 3911.9 String final = xx ઓ String ampla = 0Xf1.23cØa1 Valor flutuante = 241,14 String final = Øa1
Exemplo 4: wcstof casos para INFINITY e NaN
#include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str1() = L"-inFinityxu03a3y"; wchar_t str2() = L"NaN11u0429"; wchar_t *end; float value; value = wcstof(str1,&end); wcout << L"Wide String = " << str1 << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstof(str2,&end); wcout << L"Wide String = " << str2 << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )
Quando você executa o programa, a saída será:
String ampla = -inFinityxΣy Valor flutuante = -inf String final = xΣy String ampla = NaN11Щ Valor flutuante = nan String final = 11Щ
Em geral, um argumento de ponto flutuante válido para a função wcstof () tem o seguinte formato:
(espaço em branco) (- | +) (dígitos) (. dígitos) ((e | E) (- | +) dígitos)
A função wcstof () ignora todos os caracteres de espaço em branco iniciais até que o caractere de espaço em branco principal seja encontrado.
Então, começando com este caractere, ele pega tantos caracteres quanto possíveis que formam uma representação de ponto flutuante válida e os converte em um valor de ponto flutuante. O que restar da string após o último caractere válido é armazenado no objeto apontado por str_end.
Exemplo 5: função wcstof () com espaço em branco à esquerda
#include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str() = L" 21.69u04f8aa"; wchar_t *end; float value; value = wcstof(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )
Quando você executa o programa, a saída será:
String ampla = 21,69Ӹaa Valor flutuante = 21,69 String final = Ӹaa