C ++ wcstof () - Biblioteca standard C ++

Funcția wcstof () din C ++ interpretează conținutul unui șir larg ca un număr în virgulă mobilă și îi returnează valoarea ca float.

Această funcție setează, de asemenea, un pointer pentru a indica primul caracter larg după ultimul caracter valid al șirului larg, dacă există, în caz contrar, indicatorul este setat la nul.

Este definit în fișierul antet.

wcstof () prototip

 float wcstof (const wchar_t * str, wchar_t ** str_end);

Funcția wcstof () ia ca parametru șirul larg și un pointer către caracterul larg, interpretează conținutul șirului larg ca un număr în virgulă mobilă și returnează o valoare float.

wcstof () Parametri

  • str: Un șir larg având reprezentarea unui număr în virgulă mobilă.
  • str_end: Pointer către un pointer către un caracter larg. Valoarea str_end este setată de funcție la următorul caracter din str după ultimul caracter valid. Acest parametru poate fi, de asemenea, un indicator nul.

wcstof () Valoare returnată

Funcția wcstof () returnează:

  • o valoare float (care este convertită din șirul larg).
  • 0,0 dacă nu s-a putut efectua o conversie validă.

Dacă valoarea convertită este în afara intervalului, apare o eroare de interval și se returnează un HUGE_VAL pozitiv sau negativ .

Exemplul 1: Cum funcționează funcția 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; )

Când rulați programul, ieșirea va fi:

 Wide String = 40.001∏c12 Valoare float = 40.001 End String = ∏c12

Exemplul 2: funcția wcstof () fără caractere finale

 #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; )

Când rulați programul, ieșirea va fi:

 Wide String = 791.513 Valoare float = 791.513 End String =

O valoare validă în virgulă mobilă pentru funcția wcstof () constă dintr-un semn opțional + sau - urmat de unul dintre următoarele seturi:

  • Pentru valoarea zecimală în virgulă mobilă :
    • Un grup de cifre zecimale (0-9), care conține opțional un punct zecimal (.). De exemplu: 13.170, -5.63 etc.
    • O parte opțională a exponentului (e sau E) urmată de un semn opțional + sau - și o secvență non-goală de cifre zecimale. De exemplu: 3.46101e + 007, 13.19e-013 etc.
  • Pentru valoarea hexadecimală în virgulă mobilă :
    • Un șir care începe cu 0x sau 0X, urmat de o secvență non-goală de cifre hexazecimale, care conține opțional un punct zecimal (.). De exemplu: 0xfa5, -0xb1f.24 etc.
    • O parte a exponentului opțional (p sau P) urmată de un semn opțional + sau - și o secvență non-goală de cifre hexazecimale. De exemplu: 0x51c.23p5, -0x2a.3p-3 etc.
  • Infinit :
    • INF sau INFINITY (ignorând cazul). De exemplu: -Inf, InfiNiTy etc.
  • NaN (nu este un număr) :
    • Secvență NAN sau NAN (ignorând majuscule) în care secvența este o secvență de caractere constând numai din caractere alfanumerice sau subliniere (_). Rezultatul este un NaN liniștit. De exemplu: Nan, NaNab1 etc.

Exemplul 3: Cum funcționează wcstof () cu exponenți și hexadecimali?

 #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; )

Când rulați programul, ieșirea va fi:

 Șir larg = 39.119e + 2xx ઓ Valoare float = 3911.9 Șir final = xx ઓ Șir larg = 0Xf1.23cØa1 Valoare float = 241.14 Șir final = Øa1

Exemplul 4: wcstof cazuri pentru INFINITY și 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; )

Când rulați programul, ieșirea va fi:

 Wide String = -inFinityxΣy Valoare float = -inf End String = xΣy Wide String = NaN11Щ Valoare float = nan End String = 11Щ

În general, un argument valid în virgulă mobilă pentru funcția wcstof () are următoarea formă:

 (spațiu alb) (- | +) (cifre) (.cifre) ((e | E) (- | +) cifre)

Funcția wcstof () ignoră toate caracterele principale ale spațiului alb până când se găsește caracterul primar non-spațiu.

Apoi, începând de la acest caracter, este nevoie de cât mai multe caractere care formează o reprezentare validă în virgulă mobilă și le convertește într-o valoare în virgulă mobilă. Orice a rămas din șir după ultimul caracter valid este stocat în obiectul indicat de str_end.

Exemplul 5: funcția wcstof () cu spațiul alb principal

 #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; )

Când rulați programul, ieșirea va fi:

 Wide String = 21,69Ӹaa Valoare float = 21,69 End String = Ӹaa

Articole interesante...