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

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

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

 long double wcstold (const wchar_t * str, wchar_t ** str_end);

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

parametre wcstold ()

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

wcstold () Vrátená hodnota

Funkcia wcstold () vráti:

  • dlhá dvojitá 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 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; )

Po spustení programu bude výstup:

 Široký reťazec = 93,410η ת Dlhá dvojnásobná hodnota = 93,41 Koncový reťazec = η ת

Príklad 2: funkcia wcstold () bez koncových znakov

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

Po spustení programu bude výstup:

 Široký reťazec = 93,410 Dlhá dvojnásobná hodnota = 93,41 Koncový reťazec =

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

Po spustení programu bude výstup:

 Wide String = 34.901Æñ Long Double value = 34.901 End String = Æñ Wide String = 0Xfc1.a12χr12 Long Double value = 4033.63 End String = χr12

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

Po spustení programu bude výstup:

 Wide String = inFinityxΣy Long Double value = inf End String = xΣy Wide String = NaN22Щ Long Double value = nan End String = 22Щ

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

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

Funkcia wcstold () 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 wcstold () s úvodnými bielymi znakmi

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

Po spustení programu bude výstup:

 Široký reťazec = 59,013 कॵ Dlhá dvojitá hodnota = 59,013 Koncový reťazec = कॵ

Zaujímavé články...