C ++ wcstof () - štandardná knižnica C ++

Funkcia wcstof () v C ++ interpretuje obsah širokého reťazca ako číslo s pohyblivou rádovou čiarkou a vráti jeho hodnotu ako float.

Táto funkcia tiež nastaví ukazovateľ tak, aby ukazoval na prvý široký znak za posledným platným znakom širokého reťazca, ak existuje, inak je ukazovateľ nastavený na hodnotu null.

Je definované v hlavičkovom súbore.

prototyp wcstof ()

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

Funkcia wcstof () berie ako svoj parameter široký reťazec a smerník na široký znak, interpretuje obsah širokého reťazca ako číslo s pohyblivou rádovou čiarkou a vráti floatovanú hodnotu.

Parametre wcstof ()

  • str: Široký reťazec, ktorý má reprezentáciu čísla s pohyblivou rádovou čiarkou.
  • str_end: Ukazovateľ na ukazovateľ na široký znak. Hodnota str_end je nastavená funkciou na nasledujúci znak v str za posledným platným znakom. Týmto parametrom môže byť aj nulový ukazovateľ.

wcstof () Vrátená hodnota

Funkcia wcstof () vráti:

  • float value (ktorá sa prevádza zo širokého reťazca).
  • 0,0, ak nebolo možné vykonať platný prevod.

Ak je prevedená hodnota mimo rozsah, dôjde k chybe rozsahu a vráti sa kladný alebo záporný HUGE_VAL .

Príklad 1: Ako funguje funkcia 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; )

Po spustení programu bude výstup:

 Široký reťazec = 40,001∏c12 Float value = 40,001 Koncový reťazec = 12c12

Príklad 2: Funkcia wcstof () bez koncových znakov

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

Po spustení programu bude výstup:

 Široký reťazec = 791,513 Float value = 791,513 Koncový reťazec =

Platná hodnota s pohyblivou rádovou čiarkou pre funkciu wcstof () pozostáva z voliteľného znamienka + alebo -, za ktorým nasleduje jedna z nasledujúcich množín:

  • Pre desatinnú hodnotu s pohyblivou desatinnou čiarkou :
    • Skupina desatinných číslic (0-9), voliteľne obsahujúca desatinnú čiarku (.). Napríklad: 13,170, -5,63 atď.
    • Voliteľná exponentová časť (e alebo E), za ktorou nasleduje voliteľný znak + alebo - a neprázdna postupnosť desatinných číslic. Napríklad: 3,46101e + 007, 13,19e-013 atď.
  • Pre hexadecimálnu hodnotu s pohyblivou rádovou čiarkou :
    • Reťazec začínajúci na 0x alebo 0X, za ktorým nasleduje neprázdna sekvencia hexadecimálnych číslic, voliteľne obsahujúca desatinnú čiarku (.). Napríklad: 0xfa5, -0xb1f.24 atď.
    • Voliteľná exponentová časť (p alebo P), za ktorou nasleduje voliteľný znak + alebo - a neprázdna sekvencia hexadecimálnych číslic. Napríklad: 0x51c.23p5, -0x2a.3p-3 atď.
  • Nekonečno :
    • INF alebo INFINITY (ignorovanie malých a veľkých písmen). Napríklad: -Inf, InfiNiTy atď.
  • NaN (nie číslo) :
    • Sekvencia NAN alebo NAN (ignorovanie malých a veľkých písmen), kde sekvencia je sekvencia znakov pozostávajúca iba z alfanumerických znakov alebo podčiarkovníka (_). Výsledkom je tichý NaN. Napríklad: Nan, NaNab1 atď.

Príklad 3: Ako funguje wcstof () s exponentmi a hexadecimálnymi číslami?

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

Po spustení programu bude výstup:

 Široký reťazec = 39.119e + 2xx ઓ Float value = 3911,9 Koncový reťazec = xx ઓ Wide String = 0Xf1.23cØa1 Float value = 241,14 Koncový reťazec = Øa1

Príklad 4: Prípady wcstof pre INFINITY a 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; )

Po spustení programu bude výstup:

 Wide String = -inFinityxΣy Float value = -inf End String = xΣy Wide String = NaN11Щ Float value = nan End String = 11Щ

Platný argument s pohyblivou rádovou čiarkou pre funkciu wcstof () má vo všeobecnosti nasledujúcu formu:

 (biele medzery) (- | +) (číslice) (. číslice) ((e | E) (- | +) číslice)

Funkcia wcstof () ignoruje všetky vedúce medzery, kým sa nenájde primárny znak bez medzier.

Potom, počnúc týmto znakom, trvá čo najviac znakov, ktoré vytvoria platné vyjadrenie s pohyblivou rádovou čiarkou a prevedú ich na hodnotu s pohyblivou desatinnou čiarkou. Čokoľvek, čo zostane z reťazca po poslednom platnom znaku, je uložené v objekte, na ktorý ukazuje str_end.

Príklad 5: Funkcia wcstof () s úvodnými bielymi znakmi

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

Po spustení programu bude výstup:

 Wide String = 21.69Ӹaa Float value = 21.69 End String = Ӹaa

Zaujímavé články...