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

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

Funkcija wcstold () taip pat nustato rodyklę, kuri nurodo pirmąjį plačią 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.

wcstold () prototipas

 ilgas dvigubas wcstoldas (const wchar_t * str, wchar_t ** str_end);

Funkcija „wcstold“ (kaip parametras ima plačią eilutę ir žymeklį iki plataus simbolio, plačios eilutės turinį interpretuoja kaip slankiojo kablelio skaičių ir grąžina ilgą dvigubą vertę.

wcstold () 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ė.

wcstold () Grąžinimo vertė

Funkcija wcstold () grąžinama:

  • ilga 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 wcstold ()?

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

Kai paleisite programą, išvestis bus:

 Plati eilutė = 93,410η ת Ilgoji dviguba reikšmė = 93,41 pabaigos eilutė = η ת

2 pavyzdys: funkcija wcstold () be ženklų

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

Kai paleisite programą, išvestis bus:

 Plati eilutė = 93,410 Ilgoji dviguba vertė = 93,41 Pabaigos eilutė =

Galiojančią „wcstold ()“ 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 wcstold () 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"34.901u00c6u00f1"; wchar_t str2() = L"0Xfc1.a12u03c7r12"; wchar_t *end; long double value; value = wcstold(str1,&end); wcout << L"Wide String = " << str1 << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstold(str2,&end); wcout << L"Wide String = " << str2 << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

Kai paleisite programą, išvestis bus:

 Plati eilutė = 34.901Æñ Ilgoji dviguba reikšmė = 34.901 Pabaigos eilutė = Æñ Plati eilutė = 0Xfc1.a12χr12 Ilgoji dviguba reikšmė = 4033.63 Pabaigos eilutė = χr12

4 pavyzdys: wcstold atvejai INFINITY ir 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"NaN22u0429"; wchar_t *end; long double value; value = wcstold(str1,&end); wcout << L"Wide String = " << str1 << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstold(str2,&end); wcout << L"Wide String = " << str2 << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

Kai paleisite programą, išvestis bus:

 Plati eilutė = inFinityxΣy Ilga dviguba reikšmė = inf Pabaigos eilutė = xΣy Plati eilutė = NaN22Щ Ilga dviguba reikšmė = nan Pabaiga eilutė = 22Щ

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

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

Funkcija wcstold () 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 wcstold () su priekiniu tarpu

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

Kai paleisite programą, išvestis bus:

 Plati eilutė = 59.013 कॵ Ilga dviguba vertė = 59.013 Pabaigos eilutė = कॵ

Įdomios straipsniai...