C ++ wcstod () - C ++ -kirjasto

Funktio wcstod () C ++: ssa tulkitsee leveän merkkijonon sisällön liukuluvuna ja palauttaa sen arvon kaksinkertaiseksi.

Wcstod () -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.

wcstod () -prototyyppi

 kaksinkertainen wcstod (const wchar_t * str, wchar_t ** str_end);

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

wcstod () -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.

wcstod () Palautusarvo

Wcstod () -funktio palauttaa:

  • kaksinkertainen 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 wcstod () -toiminto toimii?

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str() = L"83.201xzu0496u0687"; wchar_t *end; double value; value = wcstod(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

Kun suoritat ohjelmaa, tulos on:

 Leveä merkkijono = 83.201xzҖ ڇ Kaksoisarvo = 83.201 End String = xzҖ ڇ

Esimerkki 2: wcstod () -funktio ilman merkkejä

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str() = L"83.201"; wchar_t *end; double value; value = wcstod(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; ) 

Kun suoritat ohjelmaa, tulos on:

 Leveä merkkijono = 83,20 Kaksoisarvo = 83,20 Päätejono =

Voimassa oleva wcstod () -funktion kelluva arvo koostuu valinnaisesta + tai - -merkistä, jota seuraa jokin seuraavista sarjoista:

  • 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 wcstod () toimii eksponenttien ja heksadesimaalien kanssa?

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str1() = L"-136.31e-2Endu03c8"; wchar_t str2() = L"0x11a.2cu05ea"; wchar_t *end; double value; value = wcstod(str1,&end); wcout << L"Wide String = " << str1 << endl; wcout << L"Double value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstod(str2,&end); wcout << L"Wide String = " << str2 << endl; wcout << L"Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

Kun suoritat ohjelmaa, tulos on:

 Leveä merkkijono = -136,31e-2Loppuψ Kaksoisarvo = -1,3631 Loppumerkkijono = Loppuψ Laaja merkkijono = 0x11a.2c ת Kaksinkertainen arvo = 282,172 Loppumerkkijono = ת

Esimerkki 4: wcstod-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; double value; value = wcstod(str1,&end); wcout << L"Wide String = " << str1 << endl; wcout << L"Double value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstod(str2,&end); wcout << L"Wide String = " << str2 << endl; wcout << L"Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

Kun suoritat ohjelmaa, tulos on:

 Leveä merkkijono = -inFinityxΣy Kaksoisarvo = -inf End String = xingy Leveä merkkijono = NaN11Щ Kaksinkertainen arvo = nan End merkkijono = 11Щ

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

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

Wcstod () -funktio jättää huomiotta kaikki johtavat välilyönnin merkit, kunnes ensisijainen ei-tyhjämerkki 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: wcstod () -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; double value; value = wcstod(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

Kun suoritat ohjelmaa, tulos on:

 Leveä merkkijono = 21,69Ӹaa Kaksinkertainen arvo = 21,69 Lopun merkkijono = =aa

Mielenkiintoisia artikkeleita...