C ++ wcstod () - C ++ standartinė biblioteka

Funkcija wcstod () C ++ interpretuoja plačios eilutės turinį kaip slankiojo kablelio skaičių ir grąžina jos vertę kaip dvigubą.

Funkcija wcstod () taip pat nustato rodyklę, kuri nurodo pirmąjį platųjį simbolį po paskutinio galiojančio plačios eilutės simbolio, jei toks yra, kitaip rodyklė nustatoma kaip nulis.

Tai apibrėžta antraštės faile.

wcstod () prototipas

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

Funkcija wcstod () kaip parametras ima plačią eilutę ir žymeklį iki plataus simbolio, plačios eilutės turinį interpretuoja kaip slankiojo kablelio skaičių ir pateikia dvigubą vertę.

wcstod () parametrai

  • str: plati eilutė, turinti slankiojo kablelio skaičių.
  • str_end: žymeklis plataus pobūdžio simboliui. Str_end reikšmę funkcija nustato kitam simboliui str po paskutinio galiojančio simbolio. Šis parametras taip pat gali būti nulinis rodyklė.

wcstod () Grąžinimo vertė

Funkcija wcstod () grąžina:

  • dviguba reikšmė (kuri konvertuojama iš plačios eilutės).
  • 0.0, jei negalėtų būti atliktas galiojantis konversija.

Jei konvertuota vertė yra už diapazono ribų, įvyksta diapazono klaida ir grąžinama teigiama arba neigiama HUGE_VAL .

1 pavyzdys: Kaip veikia funkcija wcstod ()?

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

Kai paleisite programą, išvestis bus:

 Plati eilutė = 83.201xzҖ ڇ Dviguba vertė = 83.201 Pabaigos eilutė = xzҖ ڇ

2 pavyzdys: funkcija wcstod () be simbolių

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

Kai paleisite programą, išvestis bus:

 Plati eilutė = 83.201 Dviguba vertė = 83.201 Pabaigos eilutė =

Galiojančią „wcstod“ () funkcijos slankiojo kablelio vertę sudaro pasirenkamas ženklas „+“ arba „-“, po kurio pateikiamas vienas iš šių rinkinių:

  • Dešimtainė slankiojo kablelio vertė :
    • Dešimtainių skaitmenų grupė (0–9), pasirinktinai turinti dešimtainį tašką (.). Pavyzdžiui: 13.170, -5.63 ir kt.
    • Pasirenkama eksponento dalis (e arba E), po kurios pasirenkamas ženklas + arba - ir ne tuščia dešimtainių skaitmenų seka. Pvz .: 3.46101e + 007, 13.19e-013 ir kt.
  • Skaičiuojant šešioliktainę slankiojo kablelio vertę :
    • Eilutė, prasidedanti 0x arba 0X, po kurios pateikiama ne tuščia šešioliktainių skaitmenų seka, pasirinktinai nurodant kablelį (.) Pavyzdžiui: 0xfa5, -0xb1f.24 ir kt.
    • Pasirenkama eksponento dalis (p arba P), po kurios pasirenkamas ženklas „+“ arba „“ ir tuščiadešimtainių skaitmenų tuščia seka. Pavyzdžiui: 0x51c.23p5, -0x2a.3p-3 ir kt.
  • Begalybė :
    • INF arba INFINITY (neatsižvelgiant į atvejį). Pavyzdžiui: -Inf, InfiNiTy ir kt.
  • NaN (ne skaičius) :
    • NAN arba NAN seka (neatsižvelgiant į atvejį), kai seka yra simbolių seka, susidedanti tik iš raidinių ir skaitinių simbolių arba pabraukimo (_). Rezultatas yra tylus NaN. Pavyzdžiui: Nan, NaNab1 ir kt.

3 pavyzdys: Kaip wcstod () veikia su rodikliais ir šešioliktainiais?

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

Kai paleisite programą, išvestis bus:

 Plati eilutė = -136,31e-2Pabaigaψ Dviguba reikšmė = -1,3631 Pabaigos eilutė = Pabaigaψ Plati eilutė = 0x11a.2c ת Dviguba vertė = 282,172 Pabaigos eilutė = ת

4 pavyzdys: wcstod INFINITY ir NaN atvejai

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

Kai paleisite programą, išvestis bus:

 Plati eilutė = -inFinityxΣy Dviguba reikšmė = -inf Pabaigos eilutė = xΣy Plati eilutė = NaN11Щ Dviguba reikšmė = nan Galinė eilutė = 11Щ

Apskritai, tinkamas „wcstod ()“ funkcijos slankiojo kablelio argumentas turi tokią formą:

 (tarpai) (- | +) (skaitmenys) (. skaitmenys) ((e | E) (- | +) skaitmenys)

Funkcija wcstod () ignoruoja visus pagrindinius baltosios erdvės simbolius, kol bus rastas pagrindinis ne tarpų simbolis.

Tada, pradedant nuo šio simbolio, reikia kuo daugiau simbolių, kurie suformuoja galiojantį slankiojo kablelio vaizdą ir paverčia juos slankiojo kablelio verte. Viskas, kas lieka eilutėje po paskutinio galiojančio simbolio, yra saugoma str_end nurodytame objekte.

5 pavyzdys: funkcija wcstod () su priekiniu tarpu

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

Kai paleisite programą, išvestis bus:

 Plati eilutė = 21,69Ӹaa Dviguba vertė = 21,69 Pabaigos eilutė = Ӹaa

Įdomios straipsniai...