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

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

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

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

Funkcia wcstod () vezme 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 dvojnásobnú hodnotu.

Parametre wcstod ()

  • 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ľ.

wcstod () Vrátená hodnota

Funkcia wcstod () vráti:

  • dvojnásobná hodnota (ktorá sa prevedie 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 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; )

Po spustení programu bude výstup:

 Široký reťazec = 83.201xzҖ ڇ Dvojitá hodnota = 83.201 Koncový reťazec = xzҖ ڇ

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

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

Po spustení programu bude výstup:

 Široký reťazec = 83.201 Dvojitá hodnota = 83.201 Koncový reťazec =

Platná hodnota s pohyblivou rádovou čiarkou pre funkciu wcstod () 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 wcstod () pracuje 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"-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; )

Po spustení programu bude výstup:

 Široký reťazec = -136,31e-2Endψ Dvojitá hodnota = -1,3631 Koncový reťazec = Koniecψ Široký reťazec = 0x11a.2c ת Dvojitá hodnota = 282,172 Koncový reťazec = ת

Príklad 4: Prípady wcstod 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; 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; )

Po spustení programu bude výstup:

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

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

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

Funkcia wcstod () 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 wcstod () 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; 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; )

Po spustení programu bude výstup:

 Široký reťazec = 21,69Ӹaa Dvojitá hodnota = 21,69 Koncový reťazec = Ӹaa

Zaujímavé články...