C ++ wcstod () - C ++ standardna biblioteka

Funkcija wcstod () u C ++-u interpretira sadržaj širokog niza kao broj s pomičnom zarezom i vraća njegovu vrijednost kao dvostruku.

Funkcija wcstod () također postavlja pokazivač koji pokazuje na prvi široki znak nakon zadnjeg važećeg znaka širokog niza ako postoji, u suprotnom je pokazivač postavljen na nulu.

Definirano je u datoteci zaglavlja.

prototip wcstod ()

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

Funkcija wcstod () uzima parametar široki niz i pokazivač na široki znak, interpretira sadržaj širokog niza kao broj s pokretnom zarezom i vraća dvostruku vrijednost.

wcstod () Parametri

  • str: Široki niz koji predstavlja broj s pomičnim zarezom.
  • str_end: Pokazivač na pokazivač na široki znak. Vrijednost str_end funkcija postavlja na sljedeći znak u str nakon zadnjeg važećeg znaka. Ovaj parametar također može biti null pokazivač.

wcstod () Povratna vrijednost

Funkcija wcstod () vraća:

  • dvostruka vrijednost (koja se pretvara iz širokog niza).
  • 0.0 ako se nije mogla izvršiti valjana pretvorba.

Ako je pretvorena vrijednost izvan raspona, pojavljuje se pogreška raspona i vraća se pozitivan ili negativan HUGE_VAL .

Primjer 1: Kako funkcionira 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; )

Kada pokrenete program, izlaz će biti:

 Široki niz = 83.201xzҖ ڇ Dvostruka vrijednost = 83.201 Krajnji niz = xzҖ ڇ

Primjer 2: funkcija wcstod () bez pratećih znakova

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

Kada pokrenete program, izlaz će biti:

 Široki niz = 83.201 Dvostruka vrijednost = 83.201 Krajnji niz =

Važeća vrijednost s pomičnom zarezom za funkciju wcstod () sastoji se od izbornog znaka + ili - iza kojeg slijedi jedan od sljedećih skupova:

  • Za decimalnu vrijednost s pomičnim zarezom :
    • Skupina decimalnih znamenki (0-9), koja po izboru sadrži decimalnu točku (.). Na primjer: 13.170, -5,63 itd.
    • Izborni eksponentni dio (e ili E) nakon kojeg slijedi neobavezni znak + ili - i neprazan slijed decimalnih znamenki. Na primjer: 3,46101e + 007, 13,19e-013 itd.
  • Za heksadecimalnu vrijednost s pomičnim zarezom :
    • Niz koji započinje s 0x ili 0X, nakon čega slijedi neprazan niz heksadecimalnih znamenki, koji po izboru sadrži decimalnu točku (.). Na primjer: 0xfa5, -0xb1f.24 itd.
    • Izborni eksponentni dio (p ili P) nakon kojeg slijedi neobavezni znak + ili - i neprazan niz heksadecimalnih znamenki. Na primjer: 0x51c.23p5, -0x2a.3p-3 itd.
  • Beskonačnost :
    • INF ili INFINITY (zanemarujući slučaj). Na primjer: -Inf, InfiNiTy itd.
  • NaN (nije broj) :
    • NAN ili NAN sekvenca (zanemarujući slučaj) gdje je sekvenca slijed znakova koji se sastoje samo od alfanumeričkih znakova ili donje crte (_). Rezultat je tihi NaN. Na primjer: Nan, NaNab1 itd.

Primjer 3: Kako wcstod () radi s eksponentima i heksadecimalima?

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

Kada pokrenete program, izlaz će biti:

 Široki niz = -136.31e-2Endψ Dvostruka vrijednost = -1.3631 Krajnji niz = Krajψ Široki niz = 0x11a.2c ת Dvostruka vrijednost = 282.172 Završni niz = ת

Primjer 4: Slučajevi wcstod za INFINITY i 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; )

Kada pokrenete program, izlaz će biti:

 Široki niz = -inFinityxΣy Dvostruka vrijednost = -inf Krajnji niz = xΣy Široki niz = NaN11Щ Dvostruka vrijednost = nan Krajnji niz = 11Щ

Općenito, valjani argument s pomičnom zarezom za funkciju wcstod () ima sljedeći oblik:

 (razmak) (- | +) (znamenke) (. znamenke) ((e | E) (- | +) znamenke)

Funkcija wcstod () zanemaruje sve vodeće razmake dok se ne pronađe primarni znak koji nije razmak.

Zatim, počevši od ovog znaka, potrebno je što više znakova koji čine valjanu predstavu s pomičnom zarezom i pretvaraju ih u vrijednost s pomičnom zarezom. Što god je ostalo od niza nakon zadnjeg važećeg znaka, pohranjeno je u objektu na koji pokazuje str_end.

Primjer 5: funkcija wcstod () s vodećim razmakom

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

Kada pokrenete program, izlaz će biti:

 Široki niz = 21,69Ӹaa Dvostruka vrijednost = 21,69 Krajnji niz = Ӹaa

Zanimljivi članci...