C ++ wcstof () - C ++ - vakiokirjasto

Funktio wcstof () C ++: ssa tulkitsee leveän merkkijonon sisällön liukuluvunumeroksi ja palauttaa sen arvon kellukkeeksi.

Tämä toiminto asettaa myös osoittimen osoittamaan ensimmäistä leveää merkkiä leveän merkkijonon viimeisen kelvollisen merkin jälkeen, jos sellaista on, muuten osoitin asetetaan nollaksi.

Se määritetään otsikkotiedostossa.

wcstof () -prototyyppi

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

Wcstof () -funktio vie parametrina leveän merkkijonon ja osoittimen laajaan merkkiin, tulkitsee leveän merkkijonon sisällön liukuluvuna ja palauttaa kelluvan arvon.

wcstof () -parametrit

  • str: Leveä merkkijono, jolla on liukuluku.
  • str_end: Osoitin laajaan hahmoon. Str_end-arvon asettaa funktio seuraavalle merkille str: ssä viimeisen kelvollisen merkin jälkeen. Tämä parametri voi olla myös nollaosoitin.

wcstof () Palautusarvo

Wcstof () -funktio palauttaa:

  • kelluva arvo (joka muunnetaan leveästä merkkijonosta).
  • 0,0, jos kelvollista muunnosta ei voitu suorittaa.

Jos muunnettu arvo on alueen ulkopuolella, tapahtuu aluevirhe ja positiivinen tai negatiivinen HUGE_VAL palautetaan.

Esimerkki 1: Kuinka wcstof () -toiminto toimii?

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

Kun suoritat ohjelmaa, tulos on:

 Leveä merkkijono = 40.001∏c12 Kelluva arvo = 40.001 Lopullinen merkkijono = ∏c12

Esimerkki 2: wcstof () -funktio ilman merkkejä

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

Kun suoritat ohjelmaa, tulos on:

 Leveä merkkijono = 791.513 Kelluva arvo = 791.513 Lopullinen merkkijono =

Wcstof () -funktion kelvollinen liukuluku koostuu valinnaisesta + tai - -merkistä, jota seuraa jokin seuraavista joukoista:

  • Desimaalinen liukulukuarvo :
    • Ryhmä desimaalilukuja (0-9), joka sisältää mahdollisesti desimaalin (.). Esimerkiksi: 13.170, -5.63 jne.
    • Valinnainen eksponenttiosa (e tai E), jota seuraa valinnainen + tai - -merkki ja ei-tyhjä desimaalijärjestys. Esimerkiksi: 3.46101e + 007, 13.19e-013 jne.
  • Heksadesimaalinen liukuluku :
    • Merkkijono, joka alkaa 0x: lla tai 0X: llä, jota seuraa ei-tyhjä heksadesimaalilukujen sarja, joka sisältää mahdollisesti desimaalin (.). Esimerkiksi: 0xfa5, -0xb1f.24 jne.
    • Valinnainen eksponenttiosa (p tai P), jota seuraa valinnainen + tai - -merkki ja ei-tyhjä heksadesimaalilukujen sarja. Esimerkiksi: 0x51c.23p5, -0x2a.3p-3 jne.
  • Ääretön :
    • INF tai INFINITY (sivuutetaan kirjainkoko). Esimerkiksi: -Inf, InfiNiTy jne.
  • NaN (ei luku) :
    • NAN- tai NAN-sekvenssi (huomioimatta kirjainkokoa), jossa sekvenssi on merkkijono, joka koostuu vain aakkosnumeerisista merkeistä tai alaviivasta (_). Tuloksena on hiljainen NaN. Esimerkiksi: Nan, NaNab1 jne.

Esimerkki 3: Kuinka wcstof () toimii eksponenttien ja heksadesimaalien kanssa?

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

Kun suoritat ohjelmaa, tulos on:

 Leveä merkkijono = 39.119e + 2xx ઓ Kelluva arvo = 3911.9 Lopullinen merkkijono = xx ઓ Leveä merkkijono = 0Xf1.23cØa1 Kelluva arvo = 241.14 Lopullinen merkkijono = Øa1

Esimerkki 4: wcstof-tapaukset INFINITY ja 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; )

Kun suoritat ohjelmaa, tulos on:

 Leveä merkkijono = -inFinityxΣy Kelluva arvo = -inf Lopeta merkkijono = xΣy Leveä merkkijono = NaN11Щ Kelluva arvo = nan Päät jono = 11

Yleensä wcstof () -funktion kelvollinen liukuluku-argumentti on seuraavassa muodossa:

 (välilyönti) (- | +) (numeroa) (. numeroa) ((e | E) (- | +) numeroa)

Wcstof () -funktio jättää huomiotta kaikki johtavat välilyönnin merkit, kunnes ensisijainen muu kuin tyhjätavaramerkki löytyy.

Tällöin tästä merkistä alkaen tarvitaan mahdollisimman monta merkkiä, jotka muodostavat kelvollisen liukuluvun ja muuntaa ne liukulukuarvoksi. Mikä merkkijonosta on jäljellä sen jälkeen, kun viimeinen kelvollinen merkki on tallennettu str_endin osoittamaan objektiin.

Esimerkki 5: wcstof () -toiminto johtavalla välilyönnillä

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

Kun suoritat ohjelmaa, tulos on:

 Leveä merkkijono = 21,69Ӹaa Kelluva arvo = 21,69 Lopetusmerkkijono = .aa

Mielenkiintoisia artikkeleita...